内联变量如何在C ++ / C ++ 17中工作?

在C ++中,我们可以将inline关键字用于函数。在C ++ 17版本中,内联变量概念来了。

可以以多个翻译单元定义内联变量。它也遵循一个定义规则。如果多次定义,则编译器将它们全部合并到最终程序中的单个对象中。

在C ++(C ++ 17版本之前)中,我们无法直接在类中初始化静态变量的值。我们必须在类之外定义它们。

范例程式码

#include<iostream>
using namespace std;
class MyClass {
   public:
      MyClass() {
         ++num;
      }
      ~MyClass() {
         --num;
      }
      static int num;
};
int MyClass::num = 10;
int main() {
   cout<<"The static value is: " << MyClass::num;
}

输出结果

The static value is: 10
In C++17, we can initialize the static variables inside the class using inline variables.

范例程式码

#include<iostream>
using namespace std;
class MyClass {
   public:
      MyClass() {
         ++num;
      }
      ~MyClass() {
         --num;
      }
      inline static int num = 10;
};
int main() {
   cout<<"The static value is: " << MyClass::num;
}

输出结果

The static value is: 10