我对inline variableC++17的介绍有点困惑。inline variable和之间有什么区别inline static 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变量上。
它具有正常的效果,允许您直接在标头中初始化变量。任何一个:
struct A
{
    inline static int a = 42;
};
或者:
struct A
{
    static int a;
};
inline int A::a = 42;
在函数范围内:
inline不允许。
对我来说,当它是数据成员时,它会变得更有趣。C++17您可以将静态数据成员声明为inline. 优点是您不必在source file. 例如:
class A
{
// Omitted for brevity
static inline int b = 0;
};
所以int A::b;可以从源文件中删除。
| 归档时间: | 
 | 
| 查看次数: | 3319 次 | 
| 最近记录: |