在 C++ 中,static 关键字有多种使用场景,它可以用于变量、函数、类成员以及局部变量,每种情况下都有不同的语义和作用。
static
静态变量是指在函数内部或者类中声明的变量,其生命周期与程序的运行周期相同,但其作用域受到限制。
void foo() { static int counter = 0; // 静态变量,只初始化一次 counter++; cout << "Counter: " << counter << endl; } int main() { foo(); // 输出 Counter: 1 foo(); // 输出 Counter: 2 foo(); // 输出 Counter: 3 return 0; }
静态函数是指在类中声明的函数,它不依赖于任何对象实例,可以直接通过类名调用。
class MyClass { public: static void staticFunc() { cout << "Static function called" << endl; } }; int main() { MyClass::staticFunc(); // 输出 Static function called return 0; }
静态数据成员是指在类中声明的静态变量,它被所有类的对象所共享,并且只有一份副本。
class MyClass { public: static int count; }; int MyClass::count = 0; // 静态数据成员的初始化 int main() { MyClass obj1; MyClass obj2; obj1.count = 5; cout << obj2.count; // 输出 5 return 0; }
静态局部变量是指在函数内部声明的静态变量,其生命周期与程序的运行周期相同,但其作用域受到限制。
void foo() { static int counter = 0; // 静态局部变量,只初始化一次 counter++; cout << "Counter: " << counter << endl; } int main() { foo(); // 输出 Counter: 1 foo(); // 输出 Counter: 2 foo(); // 输出 Counter: 3 return 0; }
总的来说,static 关键字在 C++ 中有多种用法,它可以用于变量、函数、类成员以及局部变量,每种情况下都有不同的语义和作用,能够满足不同的编程需求。
原文链接:codingdict.net