C++中static关键字用法总结

本文详细解释了C++中static关键字的两种用途:一是与C语言相似的static,包括静态全局变量、静态局部变量和静态函数;二是面向对象程序中的static,涉及类的静态数据成员和静态函数。通过深入探讨这两种用法的特点,帮助读者理解它们在不同场景下的应用。

C++中static关键字有两类用法:和C语言用法相同的static和C++面向对象程序中的static。前者是静态全局变量、局部变量和静态函数,后者是类中的静态变量和静态函数。

一、和C语言用法相同的static

1、静态全局变量

特点:
    - 未初试化的话会被自动初始化为0;
    - 静态全局变量在全局数据区分配内存;
    - 静态全局变量在作用域是在本文件内,所以在其他文件中无法被使用。

2、 静态局部变量

 特点:
 - 静态局部变量在全局数据区分配内存;
 - 静态局部变量只会被初始化一次(如果没有显示初始化也会被初始化为0);
 - 在其作用域外无法使用,但是程序再次进入其作用域其值是上次退出时保持的值。

3、静态函数

函数返回值类型前加上static关键字之后就被定义为了静态函数。其特点只有一点,其作用域就是本文件,在其他文件中不可见(无法使用它,如果重名也不会产生冲突)。

二、面向对象程序中的static

1、类的静态数据成员

- 类的静态数据成员也是放在全局数据区;
- 为类的所有对象共有,实际上在对象产生之前类的静态数据成员就存在了。
- 类的静态数据成员有两种访问形式:
- <类对象名>.<静态数据成员名> 或 <类类型名>::<静态数据成员名>
- 静态数据成员不会和程序中的其他全局变量名字冲突。

2、类的静态函数成员

-类的静态函数成员和类的静态数据成员一样都是类的一部分,不属于某一个对象; 
-类的静态函数成员无法访问类的某个对象的非静态数据成员和非静态函数成员。
-类的非静态函数成员可以访问类的静态数据和静态函数;
-如果在类体外定义函数的话,就不能指定static了。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值