C++重拾之static用法

C++ static用法

C++ 中static关键字的用途共有五种,分别为静态全局变量、静态局部变量、静态函数和类静态成员变量,静态成员函数。

静态全局变量

定义在函数体外,使用static关键字修饰全局变量,该变量就被定义成为一个静态全局变量。区别于非静态全局变量,该静态全局变量只在本文件可见,非静态全局变量可通过extern在其他文件声明引用。

静态局部变量

定义在函数体内,生存期长于该函数。

静态函数

在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。

定义静态函数的用处:
静态函数不能被其它文件所用;
其它文件中可以定义相同名字的函数,不会发生冲突;

类静态成员变量

初始化在类体外进行,而前面不加static。c++对象内存布局中,对象包含非static成员和虚函数表指针,static成员独立于对象外。因此无论这个类的对象被定义了多少个,静态数据成员在程序中也只有一份拷 贝,由该类型的所有对象共享访问。

同全局变量相比,使用静态数据成员有两个优势:

静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性;
可以实现信息隐藏。静态数据成员可以是private成员,而全局变量不能;

类静态成员函数

静态成员函数由于不是与任何的对象相联系,因此它不具有this指 针
静态成员函数有特点:
静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;
非静态成员函数可以任意地访问静态成员函数和静态数据成员;
静态成员函数不能访问非静态成员函数和非静态数据成员;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值