【C++基础编程】#025 关键字auto简介

背景

auto是C++中的关键字。

自C++11以来,auto关键字用于两种情况:

  1. 声明变量时根据初始化表达式自动推断该变量的类型
  2. 声明函数时函数返回值的占位符。

简介

auto可以在声明变量时根据变量初始值的类型自动为此变量选择匹配的类型。

举例:对于值x=1;即可以声明:int x = 1long x = 1,也可以直接声明auto x = 1

用法

自动判断被声明变量类型

 auto f=3.14;     				//double
 auto s("hello");  				//const char*
 auto z = new auto(9); 			// int*
 auto x1 = 5, x2 = 5.0, x3='r'; //错误,必须是初始化为同一类型

但是,这么简单的变量声明类型,不建议用auto关键字,而是应更清晰地直接写出其类型

auto关键字更适用于类型冗长复杂、变量使用范围专一时,使程序更清晰易读。

在vector容器中使用

 vector<int> vec; 
 for(auto it = vec.begin(); it != vec.end(); ++it)
 {  
    cin >> *it;      //为vector数组赋值
  }

保存lambda表达式类型的变量声明

auto ptr = [](double x){return x*x;};//类型为std::function<double(double)>函数对象

在模板函数中使用

 template <class T, class U>void Multiply(T t, U u)
 {
      auto v = t * u;
      std::cout<<v;
 }

模板函数的返回类型如果也是依赖于从模板参数推导:

 template <typename _Tx, typename _Ty>
 auto multiply(_Tx v1, _Ty v2) -> decltype( _Tx * _Ty )
 {
     return v1*v2;
 }
 auto result = multiply(101, 1.414); // 结果类型是double

参考资料

https://zh.wikipedia.org/wiki/Auto_(C%2B%2B)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章