用static声明类的成员称为类的静态成员,用static修饰的成员变量,称为静态成员变量,用static修饰的成员函数,称为静态成员函数。
static在C语言:
-
修饰变量:
-
修饰函数中的局部变量,延长变量的生命周期,同时也具有记忆功能,能够保存该变量上一次被修改后的值。
-
修饰全局变量,改变该变量的链接属性,只能在当前文件中访问。
-
修饰函数
-
表明该函数只能在当前文件中进行访问
static修饰的变量与函数是有范围可见的
static在C++中
- 修饰普通局部变量与全局变量与C语言类型。
- 修饰类成员变量
- static修饰的类成员变量不属于某一个特定的对象,而是该类实例化出来所有类共享的,所以static修饰的成员变量不会导致类的大小发生改变。
- 静态成员变量必须在类外进行初始化,不能放在构造函数中初始化。定义的语法为:变量类型 类名::变量名 ,在定义的时候是不需要添加static关键字。
class A{
private:
static int a;
}
int A::a = 1;
-
静态成员可以通过类名进行访问。由于静态成员不属于某一个具体的类,所以其可以由类名进行访问。语法为:类名::静态成员名。由于静态成员是所有类对象所共享的,其访问语法也可以为:对象名.进程成员名。
-
修饰普通函数与C语言类似
-
修饰类成员函数
-
静态成员函数没有隐藏的this指针,所以不能访问非静态成员函数。