我对 C++17 引入的 inline variable
有点困惑。 内联变量
和内联静态变量
有什么区别?这也会受到范围的影响吗?
inline T var_no_scope;
inline static T static_var_no_scope;
namespace scope {
inline T var_scope;
inline static T static_var_scope;
}
任何解释将不胜感激!
最佳答案
在命名空间范围内:
inline static
似乎等同于 static
。
inline
仅当您在多个翻译单元中定义同一个变量时,变量才有效。由于 static
将变量限制为单个 TU,因此您不能有多个定义。
在类范围内:
inline
只能出现在 static
变量上。
它具有正常的效果,允许您直接在 header 中初始化变量。要么:
struct A
{
inline static int a = 42;
};
或者:
struct A
{
static int a;
};
inline int A::a = 42;
在函数范围内:
内联
是不允许的。
关于C++17 内联变量与内联静态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50515591/