1.auto定义的变量必须有初始值
2.auto语句如果在一条语句中声明多个变量,所有变量的初始基本数据类型都必须相同:
1 auto sz =0,pi =3.14//错误:sz和pi的类型不一致
同样的如果在一条语句中给多个变量初始化时,初值必须时同一个类型(注意,非常量和常量是不同的类型)
1 int a=10; 2 const int b=20; 3 auto &n=i,*p=&b;//错误
3.如果引用作为初始值的时候,真正参与初始化的其实是引用对象的值。此时编译器以引用对象的类型作为auto的类型
4.当设置为一个类型为auto引用时。初始值中的顶层常量属性仍然保留
1 const int i=0; 2 auto &r=i;//则r变成了一个常量引用
5.当设置了一个auto类型的其他变量时,初始值中顶层const被忽略,底层const保留下来
1 int i=0; 2 const int ci=i; 3 auto d=&i;//&i代表的是一个指向整型的指针,因此d也是一个指向整型的指针 4 auto e=&ci;//&ci是一个指向整型常量的指针,是一个底层const,因此d也是一个指向整型常量的指针
如果想要保留顶层const必须明确指出
1 const int i=0; 2 const auto f=i;//不加const,f是一个非常量,加了之后就变成了一个常量