一、C 语言的关键字 static 和 C++ 的关键字 static 有什么区别
C语言和C++中的关键字static
在用法和语义上有一些相似之处,但也存在一些细微的差别。
在C语言中,static
关键字主要用于以下三个方面:
- 修饰全局变量或函数:使用
static
修饰全局变量或函数,可以将其作用域限定在当前源文件中,即这些变量或函数只能在本文件内被访问和使用,不会被其他文件所引用。 - 修饰局部变量:当
static
用于修饰函数内的局部变量时,这个变量的生命周期会延长到整个程序运行期间。它只会被初始化一次,并且在函数调用之间保持其值。这意味着,在下次函数调用时,该变量不会重新初始化,而是保留其上一次的值。
在C++中,static
关键字除了具有C语言中的上述用法外,还有以下额外的用途:
- 静态成员变量和静态成员函数:由于C++支持类和面向对象编程,
static
可以用来修饰类的成员变量和成员函数。静态成员变量属于类本身,而不是类的实例(对象)。它们在所有对象之间共享,并且可以通过类名直接访问,而无需创建类的实例。静态成员函数也只能访问静态成员变量和其他静态成员函数,它们也不能访问类的非静态成员(因为非静态成员需要类的实例才能存在)。
综上所述,C++中的static
关键字继承了C语言中的