extern关键字
- 默认状态下,const对象仅在本文件内有效:const int x = 10;
- 编译器在编译过程把用到x变量的地方都将其替换成10
- 为了完成替换,编译器就得知道变量初始值
- 若程序包含多个文件,则每个用到了const对象x的文件都必须访问得到x初始值才行
- 如此,就必须在每个用到x的文件都有对x的定义,故默认情况下,const对象被设定为仅在本文件内有效
- 当多个文件出现同名const变量时,等同于在不同文件中分别定义独立的变量
- 实现const同名变量的共享:在一个文件中定义const变量,在另一文件中声明即可
- 声明并定义:extern const int x = 10;
- 声明:extern const int x;
auto关键字
- auto可在定义变量时根据初始值类型自动为此变量选择西区的类型
- auto自动推导发生在编译期间,所以不会造成效率降低
- auto不能与任何数据类型结合,如auto double d = 2.2;
auto a = 10;
auto a = 1 + 1.2;
for(auto i:arr){...}
auto add(T t F f);
cout << add(1,1.5) << endl; // 通过传入实参,推导出返回值类型
double add(); auto df = add(); // 推理了df类型为double
auto it = v.begin(); // 在类型很长时用可简化代码
auto f = []->bool{...} // 在表达式很复杂时简化代码
decltype关键字
用法:拷贝某对象或变量类型时,用其创建新的变量或对象:int a = 5; decltype(a) arr[10];
register关键字
- register只能修饰int型,无法修饰其他类型