核心差异
普通变量的生存周期在改对象的生存期中。而静态变量不存在生存周期的概念,它会被编到程序的exe里面因此始终在内存中。
静态变量详细介绍
全局变量默认是静态变量。与普通成员一样遵从public、private、protected访问规则。
静态变量 |
普通变量 |
即使类不实例化也能通过类名::静态成员名访问 |
一定要类实例化才能访问 |
不能访问非静态成员 |
可以直接访问类中的静态成员 |
对于一个类来说,无论它有多少对象都是一样的 |
相对每个对象独立存在 |
类内部的静态成员函数是不具备this指针的 |
非静态函数都会有一个指向类的对象本身的一个this指针 |
与全局变量对比拥有的优势
-
静态数据成员没有进入程序的全局名字空间,因此不存在与程序中其他全局名字冲突的可能性。
-
可以实现信息隐藏。静态数据成员可以使private成员,而全局变量不能。