关于 auto

关于 auto

C++11 中引进了auto。auto 即自动类型,可以让我们声明一个变量而无需指定其类型,类型会根据初始值而被确定。下文介绍如何使用auto以及一些注意事项。

如何使用

一个简单的例子:

auto var_1 = 5;
auto var_2 = 'C';
cout << typeid(var_1).name() << endl;	//int
cout << typeid(var_2).name() << endl;	//char

除了内置类型外,我们甚至可以将函数和迭代器放到auto类型里面。下面的代码使用auto来声明一个Lambda表达式:

auto fun_sum = [](int a, int b){ return a + b;};
cout << typeid(fun_sum).name() << endl;	//class <lambda_4a7ee7e2e99eb5d965127652e6ce69b5>

当类型名很长时,auto 的作用就凸显出来了,假设我们有一个map, 则使用auto 能让代码美观不少:

map<string, string> mapOfStrs;
map<string, string>::iterator it = mapOfStrs.begin();
auto it2 = mapOfStrs.begin();	
cout << (it2 == it ? "Yes" : "No") << endl;	//Yes

注意事项

  • 一旦auto类型的变量被初始化,就不能更改其类型

    auto a = 1;
    a = "1";	//错误
    
  • 必须在声明时初始化

    auto a;		//错误
    
  • 若函数的返回值为auto类型时需要通过特别的方法来声明

    auto get_sum(int a, int b)->int{
    	return a + b;
    }
    
  • 调用返回auto的函数

    int a = get_sum(1, 2);
    auto b = get_sum(1, 2);
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值