C++ static关键字(详解)

1.static是什么?

static是C/C++中的类型修饰符。

2.static的作用:

用来控制变量的存储方式和可见性。

3.static在程序中的具体作用:

3.1修饰局部变量:

将局部变量的存储区域由栈变成了静态区,生命周期变成为程序结束时终止。但又不改变变量的作用域。

3.2修饰全局变量:

将全局变量的作用域由整个程序变成当前文件,变量的生命周期不变。

3.3修饰函数:

将函数的作用域由整个程序变成当前文件。

3.4修饰类的成员变量:

使得被修饰的变量变为类的所有对象所共享,节省了对象的内存空间。

3.5修饰类的成员函数:

调用被修饰的函数不会访问并且修改任何对象的(非static)数据成员。

特点:在类加载时就会分配内存,没有this指针。

4.补充

1静态数据成员都是静态存储的,所以必须在main函数之前显示的对其进行初始化;

2不能再头文件中声明静态全局变量,原因是可能是产生了多个同名的静态数据;

3不能将静态成员函数定义为虚函数;

4静态成员函数没有this指针;

5static缩短了子类对父类静态成员访问的时间,相对来说节省了内存空间;

6如果不想在子类中操作父类的静态成员,则可以在子类中定义一个同名的static成员。这样可覆盖父类中的静态成员,并且根据C++的多态性变量命名规则,这样做是安全的;

7静态成员声明在类中,操作在其外部,所以对其取地址操作就跟取普通成员的操作略有不同。静态变量地址是指向其数据类型的指针,函数地址则是一个类型为nonmember的函数指针; 

#我的实习求职记录##23届找工作求助阵地##我的求职思考##如何判断面试是否凉了##实习,投递多份简历没人回复怎么办#
全部评论

相关推荐

点赞 评论 收藏
分享
霁华Tel:秋招结束了,好累。我自编了一篇对话,语言别人看不懂,我觉得有某种力量在控制我的身体,我明明觉得有些东西就在眼前,但身边的人却说啥也没有,有神秘人通过电视,手机等在暗暗的给我发信号,我有时候会突然觉得身体的某一部分不属于我了。面对不同的人或场合,我表现出不一样的自己,以至于都不知道自己到底是什么样子的人。我觉得我已经做的很好,不需要其他人的建议和批评,我有些时候难以控制的兴奋,但是呼吸都让人开心。
点赞 评论 收藏
分享
评论
4
14
分享
牛客网
牛客企业服务