C++11Auto关键字及注意点
程序员文章站
2022-05-16 16:16:29
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(); }
下一篇: Android开发中依赖导入详细方法