关于auto

auto关键字原理
     在定义变量的时候必须申明类型,c++是强语言类型,在编译阶段需要知道类型,这样的好处是程序效率更高,而动态语言不需要类型申明的需要自推导变量类型。使用了auto是不是c++效率会变慢?完全不是,因为在编译阶段编译器已经帮程序员推导好了变量的类型。前提条件是编译器可以根据当前的程序的状态推导出变量类型。只是编译器更加智能,我猜想编译时间岂不更长了。

auto关键字使用场景

场景一,申明普通变量

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto num = 10;   

场景二,函数返回值,如果没有auto,总是要巧那么长的返回值,有了auto关键字后,是不是心里感觉很爽。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. vector<string> str_vec;  
  2. vector<string>::iterator it_old = str_vec.begin();  
  3. auto it_new  = str_vec.begin();  

场景三,申明函数返回值
[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto add(int a, int b)->int {  
  2.      return a + b;  
  3. }  

auto使用需要注意的几个问题
1、使用auto关键字的变量必须有初始值,编译器才能推导出变量类型。

2、在传递const变量的时候,使用auto必须自己加const

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. const int a =10;  
  2. auto b = a;                // b的类型是int  
  3. const auto c = a;      // c 的类型是const int  

3、关于很奇葩的函数返回值
auto关键字只能在函数的返回值使用auto关键字,并且在函数尾还需要标注返回类型
这样看起来很奇葩,莫不如不用auto关键字,但我认为委员会的人没这么闲,上google查了下,有下面两条原因:
1、他们认为把返回值放在函数后面更好看(特别是返回值很长的时候)
2、C++14将会把讨人烦得返回值去掉,编译器直接支持自推导。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值