认识---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. 返回值类型 是静态的