首页 > 代码库 > C++ auto关键字
C++ auto关键字
1、auto关键一的优点
auto关键字可以知道编译器根据变量的初始表达式来推倒变量的类型,使用auto主要有一下方面的优点:
(1) 鲁棒性:当表达式的类型改变,包括函数返回值类型的转变,程序依然可以正确运行,不需要改变所有的变量类型。
(2) 性能:可以消除类型转换。
(3) 易用性:不用担心类型名错误
(4) 高效:会让程序更加有效率
auto是一个类型占位符,本身并不是一个类型,所以不可以使用sizeof或typeid
2、auto关键字会去掉变量的reference,const,volite volatile 修饰符
// cl.exe /analyze /EHsc /W4#include <iostream> using namespace std; int main( ){ int count = 10; int& countRef = count; auto myAuto = countRef; countRef = 11; cout << count << " "; myAuto = 12; cout << count << endl;}
在上面的代码中,myAuto是个int,不是int &,输出的结果是 11 11,不是11 12。
3、auto使用实例
1、下面的两个声明等价,使用auto更简便。
int j = 0; // Variable j is explicitly type int.auto k = 0; // Variable k is implicitly type int because 0 is an integer.
map<int,list<string>>::iterator i = m.begin(); auto i = m.begin();
2、对于for循环,使用auto更加简洁
// cl /EHsc /nologo /W4#include <deque>using namespace std;int main(){ deque<double> dqDoubleData(10, 0.1); for (auto iter = dqDoubleData.begin(); iter != dqDoubleData.end(); ++iter) { /* ... */ } // prefer range-for loops with the following information in mind // (this applies to any range-for with auto, not just deque) for (auto elem : dqDoubleData) // COPIES elements, not much better than the previous examples { /* ... */ } for (auto& elem : dqDoubleData) // observes and/or modifies elements IN-PLACE { /* ... */ } for (const auto& elem : dqDoubleData) // observes elements IN-PLACE { /* ... */ }}
3、auto可以用于new 和指针
double x = 12.34;auto *y = new auto(x), **z = new auto(&x);
4、在一个声明语句中可以声明多个变量
auto x = 1, *y = &x, **z = &y; // Resolves to int.auto a(2.01), *b (&a); // Resolves to double.auto c = ‘a‘, *d(&c); // Resolves to char.auto m = 1, &n = m; // Resolves to int.
5、auto可以用于条件运算符
int v1 = 100, v2 = 200;auto x = v1 > v2 ? v1 : v2;
6、在下面代码中x为int,y为const int &,fp为函数指针
int f(int x) { return x; }int main(){ auto x = f(0); const auto & y = f(1); int (*p)(int x); p = f; auto fp = p; //...}
C++ auto关键字
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。