static修饰变量是静态成员变量
static类成员需要单独在类外进行单独的初始化
静态成员变量:
-
静态成员变量不属于某个具体的对象,是类对象的共享
-
静态成员变量存储在全局数据区
-
静态成员变量在定义时分配存储空间,所以可以在没有对象时就操作
-
静态成员变量可用 <类名> :: <静态成员> / <对象>.<静态成员>来访问
-
静态成员变量和类的普通成员一样,有三种访问(公私保护)级别,可以被const修饰
静态变量与全局变量相比的优势:
-
静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其它全局名字冲突的可能性
-
可以实现信息隐藏,静态数据成员可以是private,而全局变量不能
static修饰函数是静态成员函数
静态成员函数
-
静态成员函数没有this指针,所以不能访问任何非静态成员和非静态函数 (不能用const修饰)//实际上可以调用但是必须指明调用对象(指明对象很复杂),所以一般称无法调用
-
在类外定义定义时不得添加static
-
非静态函数可以任意访问静态函数和成员
静态局部对象:
static Student stud1;
如果在函数中建立静态局部对象,则只在程序第一次调用此函数建立对象是调用构造函数一次(常用于的递归函数当中),在调用结束时对象并不释放,因此不调用析构函数,只在main函数结束时调用exit函数结束程序时,才调用析构函数
C语言中的static关键字
1.static用于函数定义时,用于修改了标识符的链接属性,外部链接属性变为内部链接属性
标识符的存储属性类型和作用域不受影响,也就说变量或者函数只能在当前源文件中访问
2.当它用于代码块内部的变量声明时,static关键字用于修改变量的存储类型
| 变量类型 | 声明位置 | 是否存储于堆栈 | 作用域 | 如果声明为static |
| 全局变量 | 所有代码块之外 | 否 | 从声明到文件尾 | 不允许从其他文件访问 |
| 局部变量 | 代码块起始处 | 是 | 整个代码块 | 变量不存储于堆栈中,他的值在整个程序执行期一直保持 |
| 形式参数 | 函数头部 | 是 | 整个函数 | 不允许 |
本文详细解析了C++中static关键字的应用,包括静态成员变量的特点、初始化方式、访问方法及与全局变量的区别;同时介绍了静态成员函数的特性,以及静态局部对象的作用。此外,还对比了C语言中static关键字的不同用途。
180

被折叠的 条评论
为什么被折叠?



