研究学习-C++11/14高级编程+Boost库 ------- 自动类型推导(auto、decltype、decltype(auto))

C++11/14新增了两个关键字:auto和decltype。它们可以推导出表达式的类型信息,是非常重要的特性,既可以极大地简化代码,更赋予了程序要原来只属于编译器的无上权力。

1,auto

auto可将其用在赋值表达式里声明变量,并在编译器自动推导出表达式的类型。

auto   a = 32;

用法如上很简单,有几个注意的地方:

  • 只能用于赋值语句里的类型推导,不能直接声明变量;
  • 总是推断出值的类型(非引用);
  • 允许使用“const/volatile/&/*”等修饰,从而得到新的类型;
  • auto&&总是推断出引用类型

备注:当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则编译器将对所声明的语句进行优化。

在C++编程中应当尽量使用auto,不会有任何效率损失,而且带来了更好的安全性和可读性。

2,decltype

auto只能在赋值语句里推导类型,要想在任意场合下要是用decltype。decltype的形式很像函数调用:

decltype(expression)

decltype(x)  d = x;

3,decltype(auto)

C++14增加了一种新的语法,decltype(auto)。

decltype(auto) 想= 6;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值