[C++]auto类型说明符

auto类型说明符:当编程时不清楚此变量的类型时,就可以使用auto说明符让编译器去根据初始值来判断此变量的类型。

要点:

        1.当使用了auto说明符时语句中所有变量的初始基本数据必须一样。

auto a=0,*p=0;
auto a=0,p=3.15 // err,a与p的类型不一样

        2.当auto说明符,中用的是引用进行初始化时,实际上初始化的数据类型是引用的对象。

int i=10,&r=i;
auto a=r;  // auto a=i;

        3.auto一般会忽略顶层const,同时底层const则会保留下来,特殊情况是:当auto修饰的变量的初始值是一个既有顶层也有底层的变量时,就不会进行忽略顶层const而保留底层const的操作。

int i=0;
const int ci=i,&cr=ci;
auto b=ci; // 这里b是一个整数,顶层const被忽略掉了
auto d=&i; // 这里d是一个指向int型的指针。
auto e=&ci; // 这里e是一个指向int型的常量指针,底层const被保留了下来

int a=10;
const int *const i = &a;
auto k = &i; // 这里的k就是一个指向常量的常量指针,即const int *const k =&i;

解释:对常量对象取地址是一种底层const,为什么是一种底层const呢?因为:ci是一个int型常量,那么ci的值和地址就不能变,既然不能变,那么&ci也就不能变,即e所指的对象不能变,而要有这个特性,那么e的类型就只能是const int *const e,但是auto会忽略掉顶层的const,所以就只能是const int *e;,如果要要求变成即指向常量的常量指针,则只需要在auto前面加上const即可,如下。

        4.如果需要推断出的auto是一个顶层const,则需要明确指出:

const auto f=&ci; // 这样总的类型就会变成 const int *const f=&ci;
const auto f=ci; // 等价于 const int f=ci;

        5.函数的参数不能是auto类型。

int A(auto i)  // err 
{

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值