c++学习记录

学习过程记录

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;//x的类型是const int
decltype(cj)y = x;//y的类型是const int&,y绑定到变量x
decltype(cj) z;//错误:z是一个引用,必须初始化

声明指针的时候必须初始化,因为是 int & 类型。

//decltype的结果可以是引用类型
int i = 42,*p = &i, &r = i;
decltype(r + 0) b;//正确:加法的结果是int,因此b是一个(未初始化的)int
decltype (*p) c;//错误:c是int&,必须初始化

生活总会有不如意,坚持就好了。继续加油吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值