类的静态变量初始化
1 目标
本文的目的是了解类的静态变量初始化。
2 示例代码
在C++中,类的静态变量是属于类本身而不是某个特定对象的。静态变量在所有对象之间共享,并且只有一个实例。静态变量的声明和初始化有一些特殊的规则:
- 声明:静态变量在类内部声明。
- 定义和初始化:静态变量在类外部进行定义和初始化。
必须对静态变量初始化,否则会报错
error LNK2001: 无法解析的外部符号 "public: static int MyClass::staticVar" (?staticVar@MyClass@@2HA)
#include <iostream>
class MyClass {
public:
// 静态变量声明
static int staticVar;
// 静态方法,用于显示静态变量的值
static void displayStaticVar() {
std::cout << "在静态函数中访问静态变量的值: " << staticVar << std::endl;
}
// 非静态成员函数
void printStaticVar() const {
std::cout << "在非静态函数中访问静态变量的值: " << staticVar << std::endl;
}
};
// 静态变量的定义和初始化(必须初始化或者声明,否则报错)
int MyClass::staticVar = 0;
int main()
{
// 访问静态变量
MyClass::displayStaticVar();
// 修改静态变量
MyClass::staticVar = 42;
// 再次访问静态变量
MyClass::displayStaticVar();
MyClass obj1;
obj1.printStaticVar();
return 0;
}