static用法

本文详细介绍了C++中static关键字的用法,包括static修饰全局变量、局部变量、普通函数和类成员变量及函数。static全局变量限制为本文件作用域,静态局部变量在整个程序运行期间存在,静态成员变量为类所有对象共享,静态成员函数不依赖于对象实例。总结了static与非static变量和函数的主要区别。
摘要由CSDN通过智能技术生成

1.static修饰普通变量
static修饰全局变量:static修饰的全局变量只在本文件中有效,就算加了extern外部声明也没有用,其他文件可以定义相同名字的变量,不会冲突。另外,被static修饰的全局变量只能初始化一次,如果没有初始化,整型默认为0(字符型为空)。

static修饰局部变量:static修饰的局部变量,它的生命周期在整个文件有效,但是出了作用域就不能再使用了。另外,被static修饰的局部变量也只能被初始化一次,对于未初始化(一般编译不过)的变量,整型默认为0,(字符型为空)。

2.static修饰普通函数
被static修饰的普通函数只在本文件内有效,但是出了作用域就不能再使用了。其他文件可定义相同名字的函数,不会冲突。

3.static修饰类成员变量
(1).在类外初始化时,前面不用加static,也不用访问权限控制符来控制。
(2).被static修饰的静态数据成员是该类所有对象所共有的,对类的所有对象来说,静态数据成员只分配了一次内存,但是被所有对象公用。
(3).静态成员变量,在程序开始的的时候分配空间,直到程序结束,贯穿整个生命周期。被访问时,可以通过对象去访问,也可以通过指定类域去访问。

4.static修饰类成员函数
1.普通的成员函数默认有一个this指针,但是被static修饰的成员函数没有,因为它属于整个类,而不是某个对象。
2.静态成员函数之间可以相互访问。静态成员函数可以访问静态成员和静态函数,但是不能访问非静态成员和非静态成员函数,非静态成员可以访问静态成员和静态成员函数。
3.静态成员韩式可以再类外定义,在类外定时不用static修饰。

static的全局变量和普通全局变量的区别?
1.存储位置:两者是相同的,都在静态存储区
2.初始化:静态全局变量只能初始化一次,防止被其他文件单元引用,普通全局变量则不是。

static的局部变量和普通局部变量的区别?
1.存储位置:静态全局变量在静态存储区,生命周期不变。普通局部变量在栈,生命周期变化。
2.初始化:静态局部变量只能初始化一次,防止被更改。普通局部变量可以多次初始化。

static的函数和普通函数
作用域:静态函数只能在本文件中使用。而普通函数在其他文件包含本文件的头文件的前提下是可以被调用的。
————————————————
版权声明:本文为CSDN博主「jxp.」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jxpOoO/article/details/92562076

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值