📅  最后修改于: 2023-12-03 15:24:08.216000             🧑  作者: Mango
在 C++ 中,静态成员变量是类的所有实例共享的成员变量。类的静态成员变量必须在类外部初始化,否则会导致链接错误。下面将介绍如何在 C++ 中初始化类的静态成员变量。
// MyClass.h
class MyClass{
public:
static int num;
};
// MyClass.cpp
#include "MyClass.h"
int MyClass::num = 0; // 初始化静态成员变量
// MyClass.h
class MyClass{
public:
static int num;
MyClass();
};
// MyClass.cpp
#include "MyClass.h"
MyClass::MyClass(){
num = 0; // 使用构造函数初始化静态成员变量
}
需要注意的是,如果类的静态成员变量是一个指针或者一个对象,一定要在构造函数中对其进行动态分配或者初始化,否则可能会导致意外的错误。
// MyClass.h
class MyClass{
public:
static int num;
static void initNum();
};
// MyClass.cpp
#include "MyClass.h"
void MyClass::initNum(){
num = 0; // 使用静态类成员函数初始化静态成员变量
}
使用静态类成员函数初始化静态成员变量比使用构造函数更加灵活,可以根据具体情况选择不同的初始化方式。需要注意的是,静态类成员函数中只能访问静态成员变量。
// MyClass.h
template <typename T>
class MyClass{
public:
static T num;
};
// MyClass.cpp
#include "MyClass.h"
template<typename T>
T MyClass<T>::num = 0; // 使用类模板初始化静态成员变量
以上是在 C++ 中初始化类的静态成员变量的几种方式,需要根据具体情况选择最适合的方式。在初始化静态成员变量时,一定要注意避免链接错误的发生。