auto (C++11) 自动类型推导:auto关键字

1. 关键字 auto

C++03及之前的标准种,auto放在变量声明之前,声明变量的存储策略。但是这个关键字常省略不写。
C++11中,auto关键字放在变量之前,作用是在声明变量的时候根据变量初始值的类型自动为此变量选择匹配的类型

例如:

int a = 10;
auto au_a = a;//自动类型推断,au_a为int类型
cout << typeid(au_a).name() << endl;

2. auto的使用限制

2.1. auto 变量必须在定义时初始化,这类似于const关键字

auto a1 = 10; //正确
auto b1; //错误,编译器无法推导b1的类型
b1 = 10;

2.2. 定义在一个auto序列的变量必须始终推导成同一类型

auto a4 = 10, a5{20}; //正确
auto b4{10}, b5 = 20.0; //错误,没有推导为同一类型

2.3. 如果初始化表达式是引用或const,则去除引用或const语义。

int a{10}; int &b = a;
auto c = b; //c的类型为int而非int&(去除引用)
const int a1{10};
auto b1 = a1; //b1的类型为int而非const int(去除const)

2.4. 如果auto关键字带上&号,则不去除引用或const语意

int a = 10; int& b = a;
auto& d = b;//此时d的类型才为int&
const int a2 = 10;
auto& b2 = a2;//因为auto带上&,故不去除const,b2类型为const in

2.5. 初始化表达式为数组时,auto关键字推导类型为指针。

int a3[3] = { 1, 2, 3 };
auto b3 = a3;
cout << typeid(b3).name() << endl; //输出int * (输出与编译器有关)

2.6. 若表达式为数组且auto带上&,则推导类型为数组类型。

int a7[3] = { 1, 2, 3 };
auto& b7 = a7;
cout << typeid(b7).name() << endl; //输出int [3] (输出与编译器有关)

2.7. C++14中,auto可以作为函数的返回值类型和参数类型

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值