constexpr和const

  • const
    const表示变量是只读不可改变的,需要注意的几点如下:

1、首先变量必须初始化
const int i=get_size();//运行时初始化
const int j=42;//编译时初始化
2、仅在本文件有效,若需跨文件则需要加入extern关键字。只在一个文件定义const,而在其他多个文件中声明并使用(???不懂不是直接include头文件就可以)
3、顶层const修饰算数类型、类、指针本身。而底层const与指针与引用等复合类型有关。
例如`int i=10;const int *p=&i;//const为底层 int *const q=&i;//顶层const

  • constexpr
    C++11新标准规定,可以将变量声明为constexpr类型由编译器来验证变量的值是否为一个常量表达式,即声明为constexpr的变量必须用常量表达式初始化。包括编译和运行初始化。

1、即函数赋值必须为constexpr函数
2、constexpr修饰指针时为顶层const
constexpr int *q=nullptr;//q是一个指向整数的常量指针

  • 测试const和constexpr与c++ primer5不同的地方
    无论vs2017和ubuntu16.04 以下都会报错 “const int *” 类型的值不能用于初始化 “int *const” 类型的实体

    const int m = 0;constexpr int *p = &m; int *const q = &m;

`

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

guan_qiangqiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值