c++ 关于decltype和auto的一点小总结

最近再看C++primer 5th,正好总结一下decltype和auto的用法,方便复习

auto定义的变量必须有初始值

使用auto可以在一条语句声明多个变量,但一条声明语句只能有一个基本数据类型

auto i=0,*p=&i;
auto sz=0,pi=3.2;  //错误 sz和pi类型不一致

真正参与初始化的其实是引用对象的值,编译器以引用对象的类型作为auto的类型

int i=0,&r=i;
auto a=r; //a是int整数
auto一般会忽略顶层const,底层const保留下来
int i=0;
const int ci=i,&cr=ci;
auto b=ci;  //int 忽略顶层
auto c=cr; //int
auto d=&i; //*int
auto e=&ci; //const *int 对 常量取地址是底层
const
设置auto引用时,顶层常量属性仍然保留

const int ci=9;
auto &m=ci,*p=&ci; //m常量引用,p指向常量的指针

decltype处理顶层const和引用的方式与auto有些不同

引用从来都是作为所指对象的同义词出现,只有用在decltype处是个例外

const int ci=0,&cj=ci;
decltype(ci) x=0; //const int
decltype(cj) y=x; //const int &
另一些特殊情况

int i=2,*p=&i,&r=i;
decltype(r+0) b;  //int
decltype(*p) c;  //c是int&,必须初始化

还有一个

decltype((i)) d; //d是int&
加双括号的是引用类型

就这么多把

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值