auto原理
auto的原理就是根据后面的值,来自己推测前面的类型是什么。
auto的作用域
auto变量在离开作用域是会变程序自动释放,不会发生内存溢出情况(除了包含指针的类)。使用auto变量的优势是不需要考虑去变量是否被释放,比较安全。
for(auto i : v)
auto限制
1.用auto声明的变量必须初始化
如果不初始化就会报错
2.定义在一个auto序列的变量必须始终推导成同一类型
auto x1 = 5, x2 = 5.0, x3 = 'r';//会直接报错
decltype
decltype 和auto的区别在于
auto 根据 = 右边的初始值 val1 + val2 推导出变量的类型,并将该初始值赋值给变量 var;decltype 根据 val1 + val2 表达式推导出变量的类型,变量的初始值和与表达式的值无关。
int val1 = 1;
float val2 = 2;
auto var = val1 + val2;
decltype(val1 + val2) x = 0;
cout << var<<endl;//3
cout << x;//0