关于 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);
    
发布了90 篇原创文章 · 获赞 31 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/BlackCarDriver/article/details/105464596