2023-2-19-什么是‘constexpr‘

简介: 2023-2-19-什么是‘constexpr‘

什么是constexpr

onstexpr是c++11新添加的特征,目的是将运算尽量放在编译阶段,而不是运行阶段。这个从字面上也好理解,const是常量的意思,也就是后面不会发生改变,因此当然可以将计算的过程放在编译过程。constexpr可以修饰函数、结构体。

修饰函数

  • 修饰的函数只能包括return 语句。
  • 修饰的函数只能引用全局不变常量。
  • 修饰的函数只能调用其他constexpr修饰的函数。
  • 函数不能为void 类型和,并且prefix operation(v++)不允许出现。


目录
相关文章
|
存储 Cloud Native Linux
C++ const关键字
C++ const关键字
|
6月前
|
C++ 开发者
C++一分钟之-编译时计算:constexpr与模板元编程
【7月更文挑战第2天】C++的`constexpr`和模板元编程(TMP)实现了编译时计算,增强代码效率。`constexpr`用于声明编译时常量表达式,适用于数组大小等。模板元编程则利用模板进行复杂计算。常见问题包括编译时间过长、可读性差。避免方法包括限制TMP使用,保持代码清晰。结合两者可以解决复杂问题,但需明确各自适用场景。正确使用能提升代码性能,但需平衡复杂性和编译成本。
147 3
|
8月前
|
编译器 C++ 开发者
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程(二)
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程
293 1
|
8月前
|
安全 C++
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程(一)
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程
363 1
|
8月前
|
安全 算法 程序员
【 C++14 新特性 加强版 constexpr】深入探索 C++14 中的 constexpr
【 C++14 新特性 加强版 constexpr】深入探索 C++14 中的 constexpr
118 0
|
8月前
|
编译器 C++ 容器
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程(三)
【C++ 泛型编程 进阶篇】:用std::integral_constant和std::is_*系列深入理解模板元编程
119 0
|
存储 Cloud Native 编译器
|
编译器
constexpr 和 常量表达式
常量表达式是指值不会改变并且在编译过程就能得到计算结果的表达式。 字面值属于常量表达式,用常量表达式初始化的const对象也是常量表达式。 那么是什么来就决定是不是常量表达式呢?一个对象是不是常量表达式主要看它的数据结构和初始值。
105 1
|
编译器 C++
C++11之常量表达式(const与constexpr的区别)
C++11之常量表达式(const与constexpr的区别)
170 0
【C++之运算符重载1】复数类 Complex 重载运算符 “+”
【C++之运算符重载1】复数类 Complex 重载运算符 “+”

热门文章

最新文章