c++ static 关键字总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++ static 关键字总结相关的知识,希望对你有一定的参考价值。
1. 静态全局变量
在全局变量之间加上static关键字,就被定义为静态全局变量。
特点:在全局数据区分配内存
未初始化则被自动初始化为0
在声明它的文件内可见,在声明它之外的文件不可见,其他文件中可使用同名变量
2. 静态局部变量
在局部变量前加上static关键字,就被定义为静态局部变量
特点:在全局数据区分配内存,但是作用域为局部作用域
一般在声明时初始化,只能被显示初始化一次,以后调用该函数时不被初始化
若未显示初始化,初始化为0
3.静态函数
在函数返回类型前加上static关键字,就被定义为静态函数
特点:只在声明它的文件中可见,在其他文件中不可见
其他文件中可以有与之同名的函数
4.静态数据成员
在类数据成员声明前加上static关键字,就被定义为静态数据成员
特点:无论类对象有多少个,静态数据成员只有一份拷贝,被所有对象共享访问,只分配一次内存,值可以更新
静态数据成员储存在全局数据区,在定义时要分配空间,所以不能在声明时定义(赋值),可以在声明第一个对象时初始化,格式为
<数据类型><类名>::<静态数据成员名>=<值>,该初始化可以放在类定义里,这样类声明对象时即可初始化
静态数据成员遵守public,private,protect访问规则
同全局变量相比,可以实现信息隐藏,而且由于没有进入全局名字空间,所以不会有命名冲突
5.静态成员函数
在类成员函数前加入static关键字,就被定义为静态成员函数
特点:为类服务而不是为某个对象服务,是类的内部实现,属于类定义的一部分
由于静态成员函数不与类对象联系,所以不存在缺省的this指针,所以也无法访问非静态数据成员,也无法访问非静态成员函数
除了使用成员访问操作符(.和->)外还可以直接访问静态成员函数,格式为<类名>::<静态成员函数名>(<参数表>)
以上是关于c++ static 关键字总结的主要内容,如果未能解决你的问题,请参考以下文章