1.auto
C++11中,auto并不代表一种实际的数据类型,只是一个类型声明的"占位符",auto并不是万能的在任意场景下都能够推导出变量的实际类型,使用auto声明的变量必须要进行初始化,以让编译器推导出它的实际类型,在编译时将auto占位符替换成真正的类型。
语法:
auto 变量名 = 变量值;
代码如下:
#include <iostream>
using namespace std;int main()
{auto x = 3.14;// doubleauto y = 520;// intauto z = 'a';// charauto nb;// errorauto double nb1;// 语法错误,不能修改数据类型
}
1.当变量不是指针或者引用类型时,推导的结果中不会保留const,volatile关键字。
2.当变量是指针或者引用类型时,推导的结果中会保留const,volatile关键字。
代码如下:
#include <iostream>
using namespace std;int main()
{int tmp = 110;auto *a = &tmp;//auto -> intauto b = &tmp;//auto -> int*auto &c = tmp;//auto -> intauto d = tmp;// auto ->int//有const修饰int tmp1 = 250;const auto a1 = tmp;// auto -> intauto a2 = a1;/* auto -> int 当变量不是指针或者引用类型时,推导的结果中不会保留const,volatile关键字。*/const auto & a3 = tmp;//const已经写出来了,就要保留下来,auto -> intauto & a4 = a3;/*a3 -> const int & auto -> const int 当变量是指针或者引用类型时,推导的结果中会保留const,volatile关键字。*/auto * pt4 = &a1;//pt4 -> const int * auto ->const int return 0;}