常量表达式
来源:互联网 发布:ai cc for mac破解版 编辑:程序博客网 时间:2024/05/22 05:13
字面值:是一个不能改变的值,如数字、字符、字符串等。单引号内的是字符字面值,双引号内的是字符串字面值。
字面值类型(literal type):算数类型、引用和指针等。
常量表达式(const experssion):是指(1)值不会改变 并且 (2)在编译过程就能得到计算结果的表达式。字面量属于常量表达式,用常量表达式初始化的const对象也是常量表达式。
一个对象(或表达式)是不是常量表达式由它的数据类型和初始值共同决定。
const int a =1;//常量表达式cosnt int b=a+1;//常量表达式int c=2;//初始值是字面值常量,当c数据类型是普通int。const int d=fun();//fun()值要在运行时得到,d不是字面值常量。
constexpr变量
C++11新标准规定,允许将变量声明为constexpr类型以便由编译器来验证变量的是否是一个常量表达式。
声明为constexpr的变量一定是一个常量,而且必须用常量表达式初始化。
constexpr函数
constexpr函数是指能用于常量表达式的函数。
应遵循的约定:函数返回类型及所有形参的类型都是字面值类型,而且函数体中必须有且只有一条return 语句。
constexpr函数体内可以有其他语句,只要这些语句在运行时不执行任何操作。(例如,空语句、类型别名和using声明等)
constexpr函数被隐式地指定为内联函数。
constexpr int fun(int a){ return a*10; }若a是常量表达式,fun(a)就是常量表达式。若a不是常量表达式,fun(a)就是变成普通函数。
当constexpr函数是常量表达式时可以用来初始化constexpr变量。
constexpr和指针
constexpr声明中定义了一个指针,限定符constexpr仅对指针对象有效,与指针所指的对象无关。
const int *p1=nullptr;//p1是指向整形常量的指针constexpr int *p2=nullptr;//p2是指向整形的常量指针(等效于 int *const p2=nullptr;)但constexpr声明的指针初始值只能是0、nullptr和存储于某个固定地址中的对象。因为它是常量表达式(常量表达式定义(2))。
阅读全文
0 0
- 常量和常量表达式
- 常量表达式
- 常量表达式
- 表达式必须是常量表达式
- 字符串常量 表达式
- constexpr和常量表达式
- 4常量表达式计算器
- constexpr和常量表达式
- C++11 常量表达式
- constexpr和常量表达式
- constexpr和常量表达式
- 常量&变量&表达式
- c++ 常量表达式
- C 指针&&表达式&&常量
- C++常量表达式小结
- (162)常量表达式
- android 需要常量表达式
- C++11:常量表达式
- mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
- servlet05-ajax
- SpringMVC拦截器
- C++_图形界面、Qt 简单的使用、Hello world
- 总结(一)基于统计学的点云去噪
- 常量表达式
- Fidder Script
- (转)一个经典例子让你彻彻底底理解java回调机制
- 如何制作gif图片?如何制作你项目的动态效果图到你的csdn?
- 嵌套循环
- 自增长
- servlet06-jndi
- JavaWeb-自定义连接池中代理的应用
- 理解TIME_WAIT