怎样分析Visual Studio auto关键字,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
Visual Studio经过长时间的发展,很多用户都很了解Visual Studio auto关键字了,这里我发表一下个人理解,和大家讨论讨论。在C++0x中,auto关键字的意义发生了改变。从Visual C++ 2010开始,Visual Studio auto关键字将用于指引编译器根据变量的初始值来决定变量的数据类型。换句话说,我们可以把auto当成一种新的数据类型,它可以“从初始化器(initialize)中推导出所代表的变量的真正类型”。这种对auto关键字的使用方式可以大大消除当前替代方式所导致的冗长和易出错的代码。我们看一个实际的例子:
#include <iostream> #include <map> #include <ostream> #include <regex> #include <string> using namespace std; using namespace std::tr1; int main() { map<string, string> m; const regex r("(\\w+) (\\w+)"); for (string s; getline(cin, s); ) { smatch results; if (regex_match(s, results, r)) { m[results[1]] = results[2]; } } for (auto i = m.begin(); i != m.end(); ++i) { cout << i->second << " are " << i->first << endl; } return 0; }
在这段代码中,我们使用Visual Studio auto关键字来代替了真正的数据类型map<string, string>::iterator,这使得整个代码自然而简洁。
另外,跟其他数据类型一样,我们也可以对Visual Studio auto关键字进行修饰,例如添加const,指针(*),左值引用(&),右值引用(&&)等等,编译器会根据auto类型所代表的真正的数据来决定这些修饰的具体含义。
为了兼容一些旧有的C++代码,我们可以使用/Zc:auto这个编译器选项,来告诉编译器是采用Visual Studio auto关键字的原有定义还是在新标准C++0x中的定义。
看完上述内容,你们掌握怎样分析Visual Studio auto关键字的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!