C++11 AUTO 类型实践
auto在C++11中引入,为大家带来方便。
具体使用及注意事项参考:
https://blog.csdn.net/xiaoquantouer/article/details/51647865
https://www.cnblogs.com/lenmom/p/7988635.html
用法:
一是在变量声明时根据初始化表达式自动推断该变量的类型。适用于类型冗长复杂,模板类型等
二是在声明函数时作为函数返回值的占位符
注意事项:
1.使用auto关键字的变量必须有初始值。类似引用
2.函数参数和模板参数不能被声明为auto。
3.使用auto关键字声明变量的类型,不能自动推导出顶层的CV-qualifiers和引用类型,除非显示声明
使用auto关键字进行类型推导时,如果初始化表达式是引用类型,编译器会去除引用,除非显示声明
使用auto使用auto关键字进行类型推导时,编译器会自动忽略顶层const,除非显示声明
详见例子
int main() { auto fnum = 3.14; auto str("hello"); cout << "fnum type:" << typeid(fnum).name() << endl; cout << "str type:" << typeid(str).name() << endl; vector<int> vec; auto v_it = vec.begin(); cout << "v_it type:" << typeid(v_it).name() << endl; int int_ori = 5; int &ori_b = int_ori; auto a = ori_b; a = 10; cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a << endl; auto &b = ori_b; b = 20; cout << "int_ori: " << int_ori << " ori_b: " << ori_b << " a: " << a <<" b: " << b <<endl; const int cint_a = 100; auto a2 = cint_a; auto const a3 = cint_a; cout << "a2 type:" << typeid(a2).name() << " a3 type: " << typeid(a3).name() << endl; system("pause"); return 0; }
说明:
auto &b显示声明了引用,所以改变了原始值。但 a 并非引用只是被赋值的独立变量,因此未被b修改
最后的变量 a3是 const int 型如修改值会报错,而a2是 int 型可以修改
学学学~