C++ auto

  1. auto 自动推断变量的类型,比如在模板编程时,声明的变量的类型我们并不知道。C++11引入了auto类型说明符,用它来让编译器替我们去分析表达式所属的类型。auto可以在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型 auto name = value;
  2. auto的使用规则:
    1. 自动类型推断发生在编译期,所以使用auto并不会造成程序运行时效率的降低;auto 仅仅是一个占位符,在编译器期间它会被真正的类型所替代
    2. auto声明的变量必须要初始化,否则编译器不能判断变量的类型。这类似于const关键字
    3. auto不能被声明为返回值,auto不能作为形参,auto不能被修饰为模板参数
    4. 代替冗长复杂的变量声明。**如变量auto it代替map<int,int>::iterator类型
    5. 定义模板参数时,用于声明依赖模板参数的变量。
    6. 模板函数依赖于模板参数的返回值
  3. 推导规则
    1. 声明为auto(不是auto&)的变量,忽视掉初始化表达式的顶层const。即对有const的普通类型(int、double等)忽视const,对常量指针(顶层const)变为普通指针,对指向常量(底层const)的常量指针(顶层cosnt)变为指向常量的指针(底层const)
    2. 声明为auto&的变量,保持初始化表达式的顶层const或volatile 属性
    3. 若希望auto推导的是顶层const,加上const,即const auto
  4. auto 的限制:
    1. auto 不能在函数的参数中使用。
    2. auto 不能作用于类的非静态成员变量(也就是没有 static 关键字修饰的成员变量)中。
    3. auto 关键字不能定义数组,比如:
      1. char url[] = “egwwagewa”;
      2. auto str[] = url; //arr 为数组,所以不能使用 auto
    4. auto 不能作用于模板参数

参考资料:https://github.com/Light-City/CPlusPlusThings

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值