C++关键字static
1.静态成员变量: 当static
关键字用于类的成员变量时,意味着这个变量是类的所有实例共享的。无论类实例有多少个,静态成员变量只有一个副本。静态成员变量经常用于存储类的公共数据,如配置选项或计数器。
class MyClass { public: static int count; // 静态成员变量 }; int MyClass::count = 0; // 在类外初始化
2.静态成员函数: 静态成员函数属于类本身,而不是类的任何特定实例。因此,它们可以通过类名直接调用,而不需要创建类的实例。静态成员函数可以访问静态成员变量,但它们不能访问非静态成员变量,因为非静态成员变量依赖于具体实例。
class MyClass { public: static void StaticMethod() { // 可以访问静态成员,但不能访问非静态成员 } };
通过类名调用: 由于静态成员函数不依赖于对象实例,它们可以通过类名直接调用,如下所示:
MyClass::StaticMethod();
3.静态局部变量: 在函数内部声明的静态变量,即使函数调用结束,它们的值也会保留。这意味着静态局部变量在程序的整个生命周期内只被初始化一次,并且每次函数调用都会使用相同的内存空间。
void Function() { static int localStaticVar = 0; // 静态局部变量 localStaticVar++; }
4.静态全局变量: 当static
关键字用于全局变量时,它限制了变量的作用域,使其只在定义它的文件内部可见,从而避免了不同文件间的命名冲突。
static int globalVar; // 只在当前文件内可见