21xrx.com
2024-09-20 00:10:16 Friday
登录
文章检索 我的文章 写文章
C++静态类类型变量的初始化方法
2023-06-30 03:15:08 深夜i     --     --
C++ 静态类 类型变量 初始化方法

C++中的静态类类型变量是指在类中使用static关键字定义的变量。静态类类型变量在程序执行期间仅被初始化一次,均存储在全局数据区,适用于多个对象共享数据的情况。那么,静态类类型变量的初始化方法是怎样的呢?

首先,可以在类外定义和初始化静态类类型变量,如下所示:

 c++

class MyClass

public:

  static int myVar;

;

int MyClass::myVar = 0; // 类外定义和初始化myVar

int main() obj2;

  obj1.myVar = 1;

  obj2.myVar = 2; // obj1和obj2共享myVar变量

  cout << obj1.myVar << endl; // 输出2

  cout << obj2.myVar << endl; // 输出2

代码中,使用了类外定义并初始化的方式为静态类类型变量myVar分配了存储空间,并将其初始化为0。由于静态类类型变量可以被所有类的对象所共享,因此在main函数中修改obj1的myVar值也会影响obj2的myVar值。

除了上述方式,还可以在类中使用静态成员函数初始化静态类类型变量,如下所示:

 c++

class MyClass {

public:

  static int myVar;

  static void init()

    myVar = 0;

  

};

int MyClass::myVar; // 类外定义myVar

int main() {

  MyClass::init(); // 使用静态成员函数初始化myVar

  MyClass obj1, obj2;

  obj1.myVar = 1;

  obj2.myVar = 2;

  cout << obj1.myVar << endl; // 输出1

  cout << obj2.myVar << endl; // 输出2

  cout << MyClass::myVar << endl; // 输出0

}

代码中,在类中定义了静态成员函数init()用于初始化静态类类型变量myVar的值。该静态成员函数可以通过类名访问,并且只会被调用一次,从而保证静态类类型变量在程序执行期间仅被初始化一次。

不过需要注意的是,如果静态类类型变量是一个指针,则需要在类外分配内存,并在初始化时对其进行赋值。示例如下:

 c++

class MyClass {

public:

  static int *pMyVar;

};

int *MyClass::pMyVar = new int(0); // 类外定义和初始化pMyVar

int main() {

  MyClass obj1, obj2;

  *obj1.pMyVar = 1;

  *obj2.pMyVar = 2;

  cout << *obj1.pMyVar << endl; // 输出2

  cout << *obj2.pMyVar << endl; // 输出2

}

代码中,定义了一个静态指针类型的变量pMyVar,并在类外分配了内存,并将其初始化为0。在主函数中,通过类的对象来间接访问静态指针变量,并修改其值。由于静态指针变量是一个共享的数据,因此修改obj1的pMyVar值也会影响obj2的pMyVar值。

总之,在C++中,初始化静态类类型变量的方法有很多种,可以根据实际需要选择适合自己的方式。无论是在类内还是在类外,只要保证静态变量在程序执行期间仅被初始化一次,并且正确初始化,就可以达到共享数据的目的。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复