static关键字?
▪ 修饰局部变量:静态存储区(全局数据区)分配内存;首次函数调⽤中初始化,之后的函数调⽤不再初始化;局部作⽤域内可见,函数退出后,存在但不能使用
▪ 修饰全局变量:静态存储区(全局数据区)分配内存;整个⽂件内可见,⽂件外不可见
▪ 修饰函数:整个⽂件可以,⽂件外不可⻅;避免函数同名冲突(static修饰函数的弊端:仅在本文件中可见)
▪ 修饰成员变量:所有对象共享;类外初始化;不需要对象实例化就可以访问
▪ 修饰成员函数:所不能访问⾮静态成员(变量,不能调⽤⾮静态成员函数)原因是不能接 受this指针,与任何对象⽆关;只能访问静态成员;不需要对象实例化就可以访问。
static成员变量:只与类关联,不与类的对象关联。定义时要分配空间,不能在类声明中初始化,必须在类定义体外部初始化,初始化时不需要标示为static;可以被非static成员函数任意访问。
static成员函数:不具有this指针,无法访问类对象的非static成员变量和非static成员函数;不能被声明为const、虚函数和volatile;可以被非static成员函数任意访问
▪ C和C++中的区别:C只能修饰局部变量和全局变量、函数,C++还能修饰成员变量和成员函 数