学习过程记录
constexpr和const
constexper是一个在编译的过程中就可以得到计算结果的常量
constexpr int sz = size();
当使用函数作为constexpr的初始值的时候,不能使用普通函数,同样需要定义constexpr的函数。需要按下面去定义,不然就会报错。
constexpr int size(void)
{
return 5;
}
在constexpr声明中如果定义了一个指针,限定符constexpr仅对指针有效,对指针所指的对象无关。
const int *p = nullptr;
constexpr int *p = nullptr;
起别名
起别名之前我没见到过,这里r相当于a。
&r = a;
decltype
有时会遇到这种情况:希望从表达式的类型推断出要定义的变量的类型,但是不想用该表达式的值初始化变量。为了满足这一要求,C++11 新标准引入了第二种类型说明符decltype,它的作用是选择并返回操作数的数据类型。在此过程中,编译器分析表达式并得到它的类型,却不实际计算表达式的值:
const int ci = 0, &cj = ci;
decltype (ci) x = 0;
decltype(cj)y = x;
decltype(cj) z;
声明指针的时候必须初始化,因为是 int & 类型。
int i = 42,*p = &i, &r = i;
decltype(r + 0) b;
decltype (*p) c;
生活总会有不如意,坚持就好了。继续加油吧。
|