1、auto关键字
默认省略,在栈内分配空间,分为局部变量和全局变量
2、extern关键字,跨文件
声明全局变量或函数,该变量已在其他文件中定义为全局变量(auto),若要使用的变量是static类型,则报错‘未定义变量’
3、register关键字
定义寄存器变量,C中取地址运算符&不能作用此类变量,C++可以但有局限性,好处:提高读取速度 link
4、static关键字,作用域:被声明的文件
局部静态变量,编译阶段在静态区分配空间,生命周期是整个程序执行期间
面向对象中的使用:
修饰成员变量,在类外通过类名或对象名初始化(type base::var=key;),被所有对象共享(包括派生类对象),也可以独立访问
修饰成员函数,为所有对象共享,不含this指针,只能访问类中static成员;可以独立访问(不创建对象时可访问 base::fun();)
隐藏作用:在一个项目内,未加static前缀的成员都具有全局可见性,其他源文件可以访问。利用static的文件作用域的特性可以在不同文件中定义同名成员,不必担心命名冲突。
注意:不可以用const和static同时修饰成员函数