c++基础:新标准constexpr基本用法及其他注意点
2017-03-14 22:41
281 查看
1.基本用法:
constexpr是指值不会改变而且在编译过程就能得到计算结果的表达式。
一个表达式是不是常量表达式由它的数据类型和初始值共同决定,例如:
(上述摘录自《c++ primer》)
平时我们总是要用到字面值常量,但是如何知道刚刚开始定义的这个值是不是字面值常量,就是靠constexpr来判断,例如:
第三个还需要getnum函数在编译时就得到计算并返回字面值常量,否则会编译错误;
2.其他注意点:
constexpr只对指针有效,对指针所指的对象无关!
所以
因为constexpr把它所定义的对象置为顶层const
另外!int * constexpr q是错误的,constexpr不可怎么用。
constexpr是指值不会改变而且在编译过程就能得到计算结果的表达式。
一个表达式是不是常量表达式由它的数据类型和初始值共同决定,例如:
//max_files、limit 都是常量表达式,而staff_size、sz不是 const int max_files = 20; const int limit = max_files + 1; int staff_size = 27; const int sz = get_size();
(上述摘录自《c++ primer》)
平时我们总是要用到字面值常量,但是如何知道刚刚开始定义的这个值是不是字面值常量,就是靠constexpr来判断,例如:
constexpr int num = 20; //常数20,所以num是字面值常量 constexpr int num2 = num + 1; //由字面值常量num定义,所以num2也是 constexpr int num3 = getnum(); //getnum函数需要是一个constexpr函数
第三个还需要getnum函数在编译时就得到计算并返回字面值常量,否则会编译错误;
2.其他注意点:
constexpr只对指针有效,对指针所指的对象无关!
所以
constexpr int *p = nullptr; //指向整型的常量指针,p不可变 const int *q = nullptr; //指向整型常量的指针,*q不可变
因为constexpr把它所定义的对象置为顶层const
另外!int * constexpr q是错误的,constexpr不可怎么用。
相关文章推荐
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++基础:新标准constexpr基本用法及其他注意点
- c++ const的其他修饰用法
- C++ CONST的用法总结 ,新手需要注意~~~
- C/C++中的const和const指针的基本用法
- c++中const基本用法(常变量、常指针、常对象)
- [原创] 基础中的基础(二):C/C++ 中 const 修饰符用法总结
- C/C++基础:set的基本操作总结及注意细节问题
- C++关键字const基本用法
- C++ const用法及注意事项
- C++const注意点以及用法
- c++中const的用法和注意事项
- JAVA基础 day21 字节流的输入和输出 字节流的缓冲区 (自己实现BufferedInputStream) 键盘输入 转换流的用法 改变标准输入输出设备 IO流操作的基本规律