博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

extern关键字

Posted on 2023-03-12 20:58  乔55  阅读(6)  评论(0编辑  收藏  举报

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型,无法修饰其他类型