认识---static在c++里到底干点啥?
立个小目标 “非弄懂你”
静态 --> 理解为 不动的,不能被改变的
一、全局变量 和 +static的全局变量 有什么区别?
相同点,都
1. 作用于 整个文档
2. 内存分配在全局数据区
3. 不会因 函数的退出 而释放空间
不同之处:
1.static静态全局变量 是不动的、不能被 其他文档 使用,其他文档可定义相同变量,并且不会产生冲突; 然而因为普通全局变量 默认为动态的,所以在其他文档中也可使用该全局变量 ,只需在普通全局变量前 +extern关键字 方可。
2.
二、静态的局部变量 和 静态的全局变量 区别?
相同点:
1. 内存分配在 全局数据区
不同之处:
1. 静态局部变量 只对 定义自己的函数体 始终可见
三、静态的 局部变量 和 普通局部变量 区别?
相同点:
1. 当定义它的函数 或 语句块 结束时,其 作用域随之结束
不同之处:
1. 普通局部变量 分配栈内存,程序退出后,系统回收栈内存
2. 静态局部变量 分配全局数据区。每次的值 保存至下一次调用。
3. 静态局部变量 作用体现在 -> 当需要在两次调用接口间对 变量的值 进行保存时
四、静态数据成员
1. 内存分配在 全局数据区
2. 静态数据成员 被 所有对象 公用--> 也就是 值相同
3. 静态数据成员 定义时需要分配内存空间, 但是声名类时 不能分配空间 所以也就不能定义静态数据成员
4. 静态数据成员被所有对象共享,所以,他就不属于 特定的类对象, 在没有产生 对象 时,其作用域 就可见,因此 没有产生 类实例 时,就可以被操作
5. 初始化方式: <数据类型><类名>::<静态数据成员名>=<值>
6. 静态数据成员 存在的意义: 当 各个对象 都有 相同的某属性时
五、静态成员函数
1. 静态成员函数 为 所有对象服务
2. 出现在 类外 定义的 静态成员函数 不可 指定关键字static
3. 静态成员函数 不可 访问 非静态成员函数 以及 非静态数据成员
4. 调用 静态成员函数 也 可以直接调用: <类名>::<静态成员函数名>(<参数表>)
六、静态函数
1. 只对 当前文档 开放使用
2. 返回值类型 是静态的