#include <iostream>
// 示例代码展示 decltype 的用法
void example() {
int x = 42;
auto y = x; // y 的类型是 int
decltype(x) z = x; // z 的类型也是 int
std::cout << "x: " << x << ", y: " << y << ", z: " << z << std::endl;
// 使用 decltype 确定表达式的类型
int a = 10, b = 20;
decltype(a + b) sum = a + b; // sum 的类型是 int,因为 a + b 的结果是 int
std::cout << "sum: " << sum << std::endl;
// decltype 与引用
int& ref = x;
decltype(ref) ref2 = x; // ref2 是 int& 类型的引用
ref2 = 100; // 修改 x 的值
std::cout << "x after modifying ref2: " << x << std::endl;
// decltype 与常量
const int cx = 5;
decltype(cx) cy = 5; // cy 是 const int 类型
// decltype 与指针
int* p = &x;
decltype(p) p2 = &y; // p2 是 int* 类型
std::cout << "*p: " << *p << ", *p2: " << *p2 << std::endl;
}
int main() {
example();
return 0;
}
基本用法:
decltype
可以用于确定变量或表达式的类型。例如,decltype(x)
返回 x
的类型。表达式类型:
decltype(a + b)
返回表达式 a + b
的类型。在这个例子中,a + b
的结果是 int
,因此 sum
的类型也是 int
。引用类型:
x
是一个引用(如 int& ref = x
),那么 decltype(ref)
会返回引用类型(即 int&
)。因此,ref2
也是一个引用,并且修改 ref2
会影响原始变量 x
。常量类型:
const int cx = 5
),那么 decltype(cx)
会返回 const int
类型。指针类型:
int* p = &x
),decltype(p)
会返回指针类型(即 int*
)。通过这些示例,可以看到 decltype
是一个非常强大的工具,可以帮助我们在编译时推导出复杂的类型信息。
上一篇:c++ 析构函数
下一篇:c++pair
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站