C++11之类型推导-------auto、decltype

本文探讨了C++11中的类型推导特性,重点讲解了`auto`和`decltype`的用法。`auto`类型推导简化了变量声明,但有其限制,如不能用于函数参数和非静态成员变量。`decltype`则用于获取表达式的类型。两者结合使用,可以实现返回类型后置语法,解决复杂情况下返回类型不确定的问题。
摘要由CSDN通过智能技术生成

 

1 auto类型推导 

1.1 auto类型推导的意义

auto x = 5;
auto pi = new auto(1);   //pi被推导成int*   new int(1);
const auto *v = &x, u=6; //v是const int*类型, u是const int类型
static auto y = 0.0;     //y是double类型
auto int r;              //错误,auto不再表示存储类型指示符
auto s;                  //auto无法推导出s的类型

v和u的推导要注意两点:

  • 虽然经过前面const auto *v = &x的推导,auto的类型可以确定为int了,但是u仍然必须要写后面的“=6”,否则编译器不予通过。

  • u的初始化不能是编译器推导产生二义性。例如,把u的初始化改为“u=6.0”,编译器将会报错。

auto并不能代表一个实际的类型声明(如s的编译错误),只是一个类声明类型的“占位符”。使用auto声明的变量必须马上初始化,以让编译器推断出它的实际类型,并在编译时将auto替换为真正的类

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值