auto、extern、register、static

 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同时修饰成员函数

 

猜你喜欢

转载自www.cnblogs.com/guoyujiang/p/11889732.html