C/C++关键字
C/C++ Key Words: Volatile/Static/Const/mutable/extern
Volatile
表明某个变量可能在外部被改变,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不使用保存在寄存器里的备份。Int,char,long,也可用于结构体和类(所有成员)。
一个参数可以既是const又是volatile,volatile表示它会被意想不到的改变,const表示程序不应该试图去修改它。
Static
C
1. 改变函数和变量的作用域
告诉编译器自己仅仅在作用域范围内可见。Static修饰全局变量时,它改变了全局变量的作用域,使其不能被extern外部调用,但是没有改变存放位置,还是在全局静态区。
2. 改变变量的存储空间和持久性
变量会被放在程序的全局存储区,这样可以在下一次调用时保持原来的赋值。
3. 若全局变量仅在单个文件中访问,使用static变量;当全局变量仅在函数中使用,使用static变量;设计和使用全局变量、静态变量时,需要考虑重入问题。
C++
静态成员变量隶属于类,为所有对象共享。静态成员变量在类外进行初始化,初始化使用作用域运算符来标明它的所属类,所以静态成员变量是类的成员,而不是对象的成员。静态成员变量是静态存储,必须对它初始化。
静态成员函数是类的成员,而不是对象的成员。静态成员函数可以引用静态成员变量,不能直接引用类中说明的非静态成员。
Const
Const意味着只读,告知代码阅读者该变量只读;为优化器优化提供更多信息;使代码更加健壮。
Const int a //常整型数
Int const a //常整型数
Const int* a //指针可变,变量不可变
Int * const a //指针不可变,变量可变
Int const * const a //指针变量都不可变
1. 修饰函数输入参数
2. 修饰函数返回值
3. 修饰成员函数:Const成员变量声明时,const放在函数声明的后面,表示该成员函数不修改对象,但可以修改mutable修饰的成员变量。
Mutable
修饰需要在const成员函数中修改的变量。
Extern
- 修饰函数和变量,表示它们是外部变量,可能不在当前的文件中。
- extern “c” {}:c++引入了重载和多态等新特性,编译方式和c大有不同。告知连接器采用C的方式连接其中包含的程序。