【C++】auto类型说明符

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wingrez/article/details/88045613

本文参考自《C++ Prime 第四版 中文版》


auto类型说明符

1、C++11标准引入了auto类型说明符,用它能让编译器主动去分析表达式所属的类型。

2、auto定义变量必须有初始值,编译器通过初始值来推算变量的类型。

3、可以在一条语句中用auto声明多个变量,但要求该语句中所有变量的初始值的基本数据类型都必须一样。(注意*和&并非基本数据类型的一部分)

例如:

auto i=0, *p=&i; //正确:i是整数,p是整型指针
auto sz=0, pi=3.14; //错误:sz和pi的类型不一致

4、当表达式是一个引用类型时,编译器以引用对象的类型作为auto的类型。

5、auto一般会忽略顶层const,保留底层const。

6、如果希望保留顶层const,需要明确指出。

7、设置一个类型为auto的引用时,原来的初始化规则仍然适用,且初始值中的顶层const属性仍然保留。

例如:

int i=0, &r=i;
const int ci=i, &cr=ci;
auto a=r; //(第4条)a是一个整数(int)
auto b=ci; //(第5条)b是一个整数(int)
auto c=cr; //(第4、5条)c是一个整数(int)
auto d=&i; //(第5条)d是一个整型指针(int*)
auto e=&ci; //(第5条)e是一个指向整型常量的指针(const int*)
const auto f=ci; //(第6条)f是指向整型常量的常量指针(const int* const)
auto &g=ci; //(第7条 保留底层const属性)g是一个整型常量引用,绑定到ci
auto &h=42; //(第7条 初始化规则)错误:不能为非常量引用绑定字面值
const auto &j=42; //(第6条、第7条 初始化规则)正确:可以为常量引用绑定字面值

猜你喜欢

转载自blog.csdn.net/wingrez/article/details/88045613
今日推荐