C++中的constexpr关键字
来源:互联网 发布:sql server2005企业版 编辑:程序博客网 时间:2024/05/29 15:04
常量表达式(const expression)是指值不会改变并且在编译过程中就能得到计算结果的表达式。显然,字面值属于常量表达式,用常量表达式初始化的const对象也是也是常量表达式。
一个对象(或表达式)是否是常量表达式由数据类型和初始值共同决定。
——《C++primer》P58
constexpr变量
对于是否是常量表达式的界定显得很不清晰。我们可以利用constexpr类型显式验证。 例如:
constexpr int mf = 20;//正确,20是常量表达式constexpr int limit = mf+1;//正确,mf+1是常量表达式constexpr int sz = size();//只有size是constexpr函数时成立
除了变量同样能声明constexpr指针,这种指针的特点是该指针指向内容的地址固定不变。有点类似与底层const指针。
constexpr函数
constexpr函数是指能够用于常量表达式的函数,函数的返回类型及所有形参的类型都得是字面值类型,而且函数体内只能有且只有一条return语句。
constexpr int new_sz(){return 42;}//constexpr函数constexpr size_t scale(size_t cnt){return new_sz()*cnt;}//constexpr函数但不一定返回常量表达式int arr[scale(2)];//正确 scale(2)是常量表达式int i = 2;int a2[scale(i)];//错误:scale(i)不是常量表达式
因此,constexpr函数需要放在头文件中,因为代码段在调用时,需要知道该函数的定义。
阅读全文
0 0
- C++中的constexpr关键字
- constexpr关键字
- constexpr关键字
- constexpr关键字
- constexpr关键字
- C++11新标准constexpr关键字
- c++中的constexpr与inline
- C++中的const和constexpr
- [C++] constexpr和常量表达式
- constexpr
- constexpr
- 关于constexpr关键字以及修饰的函数
- c++11的constexpr关键字 literal(常量)
- C语言中的关键字
- C语言中的关键字
- C语言中的关键字
- C中的volatile关键字
- C语言中的关键字
- 进程通信程序管理---共享内存和信号量(Linux)
- python学习笔记 暂停一段时间
- rxjs基础知识
- eclipse maven项目用tomcat启动报错 java.lang.ClassNotFoundException
- getGreatestCommonDivisor
- C++中的constexpr关键字
- django 快速入门
- POJ
- CookiePATH的设置
- 【CSS】关于CSS盒子模型中的溢出处理方式overflow属性
- 静态对象的实现
- FLASH位宽为8、16、32时,CPU与外设之间地址线的连接方法
- 爬取1024网站的图片
- Java开发微信公众号(二)——开发请求校验程序