c++11 constexpr

目的

了解constexpr作用

  1. constexpr变量

C++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的是否是一个常量表达式。

声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。

  1. constexpr函数

constexpr函数是指能用于常量表达式的函数。 应遵循的约定:函数返回类型及所有形参的类型都是字面值类型,而且函数体中必须有且只有一条return 语句。

constexpr函数体内可以有其他语句,只要这些语句在运行时不执行任何操作。(例如,空语句、类型别名和using声明等)

constexpr函数被隐式地指定为内联函数。

constexpr int fun(int a){ return a*10; }
若a是常量表达式,fun(a)就是常量表达式。若a不是常量表达式,fun(a)就是变成普通函数。

当constexpr函数是常量表达式时可以用来初始化constexpr变量。

  1. constexpr和指针
    constexpr声明中定义了一个指针,限定符constexpr仅对指针对象有效,与指针所指的对象无关。
    const int *p1=nullptr; //p1是指向整形常量的指针
    constexpr int *p2=nullptr; //p2是指向整形的常量指针
    (等效于 int *const p2=nullptr;)
    但constexpr声明的指针初始值只能是0、nullptr和存储于某个固定地址中的对象。因为它是常量表达式。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

道阻且长,行则降至

无聊,打赏求刺激而已

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

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

打赏作者

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

抵扣说明:

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

余额充值