[C++11] auto 关键字

简介

auto声明的变量必须由编译器在编译器在编译时期推导而得。
注意:使用auto定义变量时,必须对其进行初始化,在编译阶段编译器需要根据初始化表达式来推导变量的实际类型。
       因此auto并非是一种“类型”的声明,而是一个类型声明时的“占位符”,编译器在编译期会将auto替换为变量的实际类型。

C++11 赋予 auto 关键字新的含义,使用它来做自动类型推导

1.简单赋值用法以及和const配合使用

// 普通赋值用法
auto n = 27;   // auto 表示 int
auto m = 27.7; // auto 表示 double
auto i = &n;   // auto 表示 int*
auto url = "https://blog.csdn.net/dangwei_90";  // auto 表示 const char*

// 配合const使用用法
int n = 27;
const auto m = n;   // m 为 const int ,auto 表示 int
auto f = m;         // m 为 const int ,auto 表示 int(const 属性被抛弃)
const auto &i = n;  // i 为 const int& 类型,auto 表示 int
auto &j = i;        // i 为 const int& 类型,auto 表示 const int(引用,保留const)

  当类型不为引用时,auto 的推导结果将不保留表达式的 const 属性;
  当类型为引用时,auto 的推导结果将保留表达式的 const 属性。

2.常见应用
  最常见的应用在迭代器

#include <vector>
using namespace std;
int main(){
  vector< vector<int> > vec;
  // vector< vector<int> >::iterator i = vec.begin();
  auto i = vec.begin();  //使用 auto 代替具体的类型
  return 0;
}

  还常见用于auto 泛型编程,以及for循环等。

3.使用限制
   1) auto 不能在函数的参数中使用
   2) auto 不能作用于类的非静态成员变量(也就是没有 static 关键字修饰的成员变量)中
   3) auto 关键字不能定义数组
   4) auto 不能作用于模板参数

详细参考:C++ auto类型推导完全攻略

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值