constexpr 和常量表达式

常量表达式(const expression)是指值不会改变并且在编译过程就能得到计算结果的表达式。

指针和 constexpr

必须明确一点,在 constexpr 声明中如果定义了一个指针,限定符constexpr 仅对指针有效,与指针所指的对象无关:

const int *p=nullptr;     // P是一个指向整型常量的指针
constexpr int *q=nullptr; // q是一个指向整数的常量指针

p和q的类型相差甚远,p是一个指向常量的指针,而q是一个常量指针,其中的关键在于 constexpr 把它所定义的对象置为了顶层 const(参见 2.4.3 节,第 57 页)。

与其他常量指针类似,constexpr 指针既可以指向常量也可以指向一个非常量:

constexpr int *np=nullptr;  //np是一个指向整数的常量指针,其值为空
int j=0;
constexpr int i=42;         //i的类型是整型常量
//i和j都必须定义在函数体之外
constexpr const int *p=&i;  //p是常量指针,指向整型常量i
constexpr int *p1= &j;      //P1是常量指针,指向整数j

constexpr 函数

可查看 《C++ Primer》 P214,类似 inline 函数。貌似声明和定义都需要constexpr关键字。




摘自:《C++ Primer》 P60

posted @   double64  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-09-15 C# base 调用基类构造函数
2021-09-15 C# 属性
2021-09-15 C# 命名空间
2021-09-15 英语动词时态语态知识点详解
2021-09-15 英语八大时态
2021-09-15 家用空调常用塑料材料及用途
点击右上角即可分享
微信分享提示