静态变量
#include <iostream>
using namespace std;
void increment() {
static int count = 0; // 静态变量
count++;
cout << "count = " << count << endl;
}
int main() {
increment(); // 输出 count = 1
increment(); // 输出 count = 2
increment(); // 输出 count = 3
return 0;
}
在这个例子中,count是一个静态变量。在函数increment()中,每次调用时count的值都会自增并输出,但是count的值不会被重新初始化,因为它是静态变量。所以每次调用increment()函数时,count的值会保留并自增,输出的结果会是连续递增的数值。
静态函数
#include <iostream>
using namespace std;
class MyClass {
public:
static void print() { // 静态函数
cout << "This is a static function!" << endl;
}
};
int main() {
MyClass::print(); // 直接调用静态函数,输出 This is a static function!
return 0;
}
在这个例子中,print()是一个静态函数。它被定义在类MyClass中,而不是在类的实例中。因此,在主函数中可以直接使用类名称调用静态函数MyClass::print(),而不需要创建类的实例。
静态类成员
#include <iostream>
using namespace std;
class MyClass {
public:
static int count; // 静态类成员变量
void increment() {
count++; // 可以通过成员函数访问静态类成员变量
}
};
int MyClass::count = 0; // 必须在类外初始化静态类成员变量
int main() {
MyClass obj1, obj2;
obj1.increment();
obj2.increment();
cout << "count = " << MyClass::count << endl; // 输出 count = 2
return 0;
}
在这个例子中,count是一个静态类成员变量,它被定义在类MyClass中。因此,在主函数中可以通过类名称访问静态类成员变量MyClass::count,而不需要创建类的实例。可以通过成员函数increment()来访问和修改静态类成员变量。由于静态类成员变量只有一个实例,所以count的值在obj1和obj2对象的实例化中都被修改了,最后输出的结果是count = 2。