c/c++语言开发共享C++11Auto关键字及注意点

1.使用阿里云服务器,选择的centos版本,首先安装g++ 4.8.5 yum install gcc-c++ 2.写个小程序测试一下: #include "iostream&q

1.使用阿里云服务器,选择的centos版本,首先安装g++ 4.8.5

  yum install gcc-c++

2.写个小程序测试一下:

  #include "iostream"    using namespace std;    int main()  {      auto a = 1;      return 0;    }  

编译报错,找不到auto这种类型

3.auto的限制
* auto不能用于函数参数

  void testfunc(auto iparam)  {    }  test.cpp:5:20: error: parameter declared ‘auto’ void testfunc(auto iparam)                    ^

auto不能用于非静态成员变量

  struct foo  {      auto var1_ = 0;      static const auto var2_ = 0;  };  test.cpp:12:15: error: non-static data member declared ‘auto’  auto var1_ = 0;               ^

auto仅能用于推导static const的整型或者枚举成员。
auto无法定义数组 auto无法推导出模板参数 列表内容

4.什么时候用auto
* 优化代码美观性,减少冗余和繁琐的重复操作

  int main()  {      auto a = 1;        std::unordered_multimap resultmap;      //...      std::pair::iterator,          std::unordered_multimap::iterator>               range = resultmap.equal_range(key);        return 0;    }    =>    int main()  {      auto a = 1;        std::unordered_multimap resultmap;      //...      auto range = resultmap.equal_range(key);        return 0;    }

无法提前感知函数返回类型的时候

  class foo  {  public:      static int get(void)       //...  }    class bar  {  public:      static const char* get(void)      //...  }    template   void func()  {      auto val = a::get();  }
www.ctvol.com true Article c/c++语言开发共享C++11Auto关键字及注意点

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/c-cdevelopment/606481.html

(0)
上一篇 2021年5月13日 下午11:37
下一篇 2021年5月13日 下午11:41

精彩推荐