C++:constexpr

C++:constexpr

  • 简介
  • 语法
  • 参数
  • 返回值
  • constexpr 变量
  • constexpr 函数
  • 示例

简介

关键字 constexpr 是在 c + + 11 中引入的,并在 c + + 14 中得到改进。 它表示* const ant 表达式*。 与类似 const ,可将其应用于变量:当任何代码尝试将值进行 mod 时,将引发编译器错误 if 。 与不同 const , constexpr 还可以应用于函数和类 const ructors。 constexpr 指示值或返回值为 ant,并在 const 编译时计算(如果可能)。

constexpr 整数值可用于需要整数的任何位置 const ,例如模板参数和数组声明中的。 在编译时(而非运行时)计算某个值时,它可帮助您的程序运行速度更快,使用更少的内存。

为了限制编译时 ant 计算的复杂性 const ,以及它们对编译时间的潜在影响,c + + 14 标准要求 ant 表达式中的类型为 const 文本类型。

语法

constexpr文本类型 ident if ier = * const * ;
**constexpr*文本类型 ident if ier { * const ant-expression } ;
**constexpr文本类型 ident if ier ** ( 参数 **) ** ;
**constexprctor ** ( 参数 **) ** ;

参数


一个或多个参数,每个参数必须是文本类型,并且本身必须是 const ant 表达式。

返回值

constexpr 变量或函数必须返回文本类型。

constexpr 变量

和变量的主要 d if f) const constexpr 是在 const 运行时,可以将变量的初始化推迟。 constexpr 变量必须在编译时进行初始化。 所有 constexpr 变量都是 const 。

constexpr 如果变量具有文本类型并已初始化,则可以使用声明该变量。 如果初始化 for 由 ructor 按 med-v 进行 const ,则 const 必须将 ructor 声明为 constexpr 。

constexpr 当同时满足这两个条件时,可以声明引用:引用的对象由 const ant 表达式进行初始化,并且在初始化期间调用的任何隐式转换也是 const ant 表达式。

变量或函数的所有声明都 constexpr 必须具有 constexpr 规范 if ier。

constexpr float x = 42.0;
constexpr float y{
   108};
constexpr float z = exp(5, 3);
constexpr int i; // Error! Not initialized
int j = 0;
constexpr int k = j + 1; //Error! j not a constant expression

constexpr 函数

constexpr 当使用代码需要函数时,该函数的返回值可在编译时。 使用代码要求在编译时返回值以初始化 constexpr 变量,或提供一个非类型模板参数。 如果其参数为 constexpr 值, constexpr 函数将生成编译时 const ant。 使用非参数调用时 constexpr ,或在编译时不需要其值时,它会在运行时生成一个值,如常规函数。 (这种双重行为使您不必编写 constexpr 同一函数的

你可能感兴趣的:(C++语言学习文档)