C++static关键字用法
C++ 用法 关键字 static
2023-09-27 14:28:09 时间
一、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++的语法太过繁杂,不能一下子说清楚。可能还有其他的一些规则,如果有,请留言给我,谢谢。
相关文章
- C++的模板(和java的泛型一样)
- C++ 截取 char[]
- C/C++进程文件锁 之 fcntl函数的用法总结(非阻塞O_NONBLOCK)
- C++虚函数与纯虚函数用法与区别
- C/C++的#define DEBUG 用法
- c++多个源文件共用一个全局变量(extern的用法)
- 【转】C++中substr的用法
- C#,入门教程(40)——主流编程语言C,C++,C#,Java, Go,Python的对比与建议
- C++第11周项目2(3)参考——年龄几何
- C++第10周项目3扩展参考——英尺到米的转换表
- C++程序设计课程师生互动(2012年春第8周)
- C++中的endl搭配cout和cin用法
- c++中冒号(:)和双冒号(::)的用法
- 如何查看编译器的C/C++预处理定义
- 结合C++和GDAL实现shapefile(shp)文件的创建和写入
- 基于C++实现植物大战僵尸(控制台版)【100010530】
- c++之list的用法
- 《c++语言导学》——第1章 基 础 知 识1.1 引言
- C++ 关联容器之map插入相同键元素与查找元素操作
- C++中 使用数组作为map容器VAlue值的解决方法
- C++的Vector用法
- C&C++结构实训(国防科大)
- 176、【动态规划】leetcode ——1143. 最长公共子序列(C++版本)
- 124、【回溯算法】leetcode ——46. 全排列(C++版本)
- 【C++】基于linux文件管理和C++的I/O框架,实现命令行下的文件管理器
- 在CC++中char 、short 、int各占多少个字节
- C++实操 - 模板