C++ const与static
const
- const 用于定义常量,修饰要保护的东西
- 可以用于函数重载.
- 可以节省空间,避免不必要的内存分配.
- const可以修饰: 变量 函数 引用 函数参数 函数等.
- const在类中修饰成员变量.成员变量不能修改,且只能通过初始化列表进行赋值. const成员函数不能修改类中成员变量. const成员能够访问const成员变量.而其他成员函数不可以.
- const常量可能带来常量折叠问题. 编译器主动进行了优化.将const常量从内存中读入,保存在寄存器中.下次访问直接从寄存器中取出.而不是从内存中取出.可能会造成一些问题.可以使用
volatile
进行修饰,保证每次强制从内存中取值.
static
- 面向过程的static
- 静态全局变量 默认初始化为0
- 静态局部变量 只在首次执行到的时候初始化一次.
- 静态函数
- 面向对象的static
- 静态成员变量 需要分配实际的地址.需要在类外初始化
- 可以节省内存, 静态成员函数和静态成员变量都是整个类共有的.
- 静态成员函数没有this指针. 静态成员函数只能访问静态成员数据. 普通成员函数都可以.