第二章 变量和基本类型

70 阅读1分钟
四、const限定符
  1. constexpr和常量表达式
  • 常量表达式:值不会改变并且在编译过程中就能得到计算结果的表达式,字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。仅当对象使用const修饰,且初始值为常量表达式时,该对象(或表达式)为常量表达式。
    /* 初始值为字面值,且数据类型为 const int,故为常量表达式 */
    const int one = 1;
    /* 属于常量表达式 */
    const int two = one + 1;
    /* 非常量表达式 */
    int three = 3;
    /* four 的数据类型为 const int,但是其具体值需到运行阶段才能确定,故非常量表达式 */
    const int four = get_four();
  • constexpr变量:将变量声明为constexpr类型后,编译器可验证变量是否为一个常量表达式。声明为constexpr的变量一定是一个常量,且必须用常量表达式初始化。当使用函数初始化constexpr类型的变量时,仅当函数constexpr函数时正确。

    注:当认定变量是一个常量表达式时,通常将其声明为constexpr类型。