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是一个非常量,加了之后就变成了一个常量

 

posted on 2023-04-18 21:09  小凉拖  阅读(28)  评论(0编辑  收藏  举报