是否可以在构造函数外部初始化静态const值?可以在找到成员声明的同一地点进行初始化吗?
class A {
private:
static const int a = 4;
/*...*/
};
Run Code Online (Sandbox Code Playgroud) 使用C++ 17,我们得到内联变量.
其中一个用途是在类中定义常量字段.
那么这两个常量定义之间的区别是什么:
class MyClass {
static constexpr int myFirstVar = 10;
static const inline int mySecondVar = 100;
};
Run Code Online (Sandbox Code Playgroud)
当然constexpr是myFirstVar隐式内联.
什么是更好的选择,使用constexpr或inline?
注意:当你不需要constness时,那就inline更容易了.随着constexpr你没有这样的选择.
在C++ 17中,我们得到了内联变量,我假设全局constexpr变量是隐式内联的.但显然这只适用于静态成员变量.
这背后的逻辑/技术限制是什么?
资源:
声明constexpr的静态成员变量(但不是命名空间范围变量)隐式地是内联变量.