首页 > 代码库 > C++static关键字用法
C++static关键字用法
一、static的作用有三种:限制变量或函数作用域、保持变量内容的持久、默认初始化为0
1、被static关键字修饰的全局函数或者变量具有文件作用域,即只在当前文件中可见。
2、被static修饰的变量会被存储在静态存储区,生命周期也为从定义直至程序结束。对于局部变量,即使在函数退出后该静态变量依然存在,然而却也无法访问。此外,static修饰的变量一生只会被初始化一次(这点经常被用作面试的小题,需注意)。
3、正是因为被static修饰的变量会被存储在静态存储区,所以才有了这个一条。因为静态存储区的变量会被默认初始化为0。
二、除此之外,static也可以修饰C++的类成员变量和类成员函数
1、类的静态成员函数是属于整个类而非类的对象,所以它没有this指针,这就导致 了它仅能访问类的静态数据和静态成员函数。
2、静态成员函数不含有this指针,所以可以作为回调函数。但同时为了可以访问类的成员变量可以将对象的this指针当做实参传入回调函数中。
3、静态成员函数在类定义体外定义时不能加static关键字修饰,因为成员函数本是类作用域,而在类外用static修饰会将其作用于扩大为文件作用域,所以是不合理的。
4、静态成员变量并不像一般的成员变量在构造函数中初始化,而是在类的实现文件中初始化,即必须在.cpp文件中初始化,否则在程序链接时会出错,重定义,且初始化时无需再使用static关键字修饰。
5、static修饰的const成员变量可以再类中被定义时初始化。
C++的语法太过繁杂,不能一下子说清楚。可能还有其他的一些规则,如果有,请留言给我,谢谢。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。