constexpr关键字
来源:互联网 发布:足迹美图软件 编辑:程序博客网 时间:2024/05/16 16:09
转载:http://blog.csdn.net/kturing/article/details/45286823
constexpr是C++11新标准规定的规定的关键字。有时我们很难分辨一个初始值是不是常量表达式,当然可以定义一个
const变量并把它的初始值设为我们认为的某个常量表达式,但在实际使用时,尽管要求如此却常常发现初始值并非常量
表达式的情况。可以说,这时的对象的定义与使用根本就是两回事。
C++11新标准规定,允许将变量声明为constexpr类型让编译器来验证变量的值是否是一个常量表达式。
声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化:
constexpr int mf = 0; // 0 是常量表达式
constexpr int limit = mf + 1; // mf + 1 是常量表达式
constexpr int sz = size(); // 只有当 size() 是一个constexpr函数时才是一条正确的声明语句
constexpr函数要求所定义的函数足够简单以使得编译时就可以计算其结果
- 1
- 2
constexpr还能修饰类的构造函数,即保证传递给该构造函数的所有参数都是constexpr,那么产生的对象的所有成员都是constexpr,
该对象也是constexpr对象了,可用于只使用constexpr的场合。
**注意**constexpr构造函数的函数体必须为空,所有成员变量的初始化都放到初始化列表中。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
使用constexpr的好处
- 是一种很强的约束,更好的保证程序的正确定语义不被破坏;
- 编译器可以对constexper代码进行非常大的优化,例如:将用到的constexpr表达式直接替换成结果;
- 相比宏来说没有额外的开销。
但令人伤心的是,vs2010拒绝此关键字加入语言核心,IDE根本就不认识constexpr,
至于最新版本是否支持,我尚未测试,希望将来能够使用。
- constexpr关键字
- constexpr关键字
- constexpr关键字
- constexpr关键字
- C++中的constexpr关键字
- C++11新标准constexpr关键字
- constexpr
- constexpr
- 关于constexpr关键字以及修饰的函数
- c++11的constexpr关键字 literal(常量)
- C++ 0x 即将夭折的新关键字 constexpr 为 VS 2010 拒绝
- constexpr函数
- c++ constexpr
- constexpr变量
- C++ constexpr
- constexpr函数
- nullptr,constexpr和constexpr函数
- 基本语言细节--constexpr
- 小猪浅谈Android屏幕适配
- 浮沉千古事?谁与问东流。
- Spring MVC之@RequestBody, @ResponseBody 详解
- IO中其他流--节点流
- EOFError: Ran out of input
- constexpr关键字
- 【scala 笔记(4)】 控制结构 -- 自定义控制结构
- 常用的几款抓包工具
- JSP中调用java类中的方法
- JVM调优总结 -Xms -Xmx -Xmn -Xss
- MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误
- 监控和管理生产环境spring boot actuator
- Spring Data JPA进阶——Specifications和Querydsl
- RxLifecycle解决RxJava内存泄漏