C++11自动类型推导auto

auto自动类型推导

使用auto声明的变量类型,编译器在编译阶段自动推导变量类型

int a = 0;
auto i = a, &j = a, *p = &a

auto除了可以推导出基础变量类型,可以推导出指针和引用,但使用auto声明的变量必须马上初始化,因为编译器要在编译阶段就推出auto的类型并进行覆盖替换。

auto的使用还有如下需要注意的地方:

//auto b = 1, c = 1.2; 错误,类型不同,编译器编译时出现二义性,无法推导
//auto e; 错误,必须马上初始化
//int func(auto val); 错误,auto不能用于函数参数
auto的限制:

1、auto的使用必须马上初始化,否则无法推导出类型

2、auto在一行定义多个变量时,各个变量的推导不能产生二义性,否则编译失败

3、auto不能用作函数参数

4、在类中auto不能用作非静态成员变量

5、auto不能定义数组,可以定义指针

6、auto无法推导出模板参数

auto在基于范围的for循环中的使用:

for (auto i : vec) {
		cout << i << "\t";
	}

auto用于推导容器的迭代器类型:

vector vec(1,2,3);
vector<int>::iterator it = vec.begin();
//使用auto推导可以减少代码的冗余
auto it_auto = vec.begin();
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值