C++中const修饰的类的数据成员还有类的引用型数据成员必须在构造函数的初始化列表初始化,初始化列表的初始化顺序是严格按照定义类时声明类的数据成员的顺序进行初始化的。
const修饰类的成员函数时:
void base::fun(void) const
代表不可以用this指针修改类的数据成员。
volatile:变量存在的原因是每次编译器都要对我们的代码进行优化,但是当我们声明一个变量为const变量时,编译器认为这个变量是只读变量,会把它放入寄存器中,每次读取都从寄存器中读取。但是我们很有可能意外的修改了这个变量(比如我们进入该变量的地址,然后强行修改这个变量的大小),编译器却不知道这个变量已经改变了,会造成值不匹配的情况。但是用volatile修饰的变量会告诉编译器该值随时会变化,所以每次都要从内存中读取,就避免了刚才的情况。volatile变量经常用在多线程对共享资源的访问,避免了编译器的优化,造成多线程通信不匹配。
Inline : 在c语言中有#define宏定义,但是它在预处理阶段,不支持类型检查和调试,所以在c++中出现了inline关键字,它写在函数定义的前面,它只是对编译器的一种建议,一般代码就3-5行,太长会造成代码膨胀。它是在编译阶段,所以支持类型检查和调试(release模式起作用,assert在debug模式起作用)