学习笔记——类型别名、auto类型、decltype类型需要注意的一些小地方

一、类型别名(typedef)

typedef double wages;//wages 是 double 的同义词
typedef double *p;//p是double*的同义词,是一个double形的指针
const p dp=0;//dp是指向double的常量指针,相当于const double* dp;
const p *pdp;//pdp是一个指针,它的对象是指向double的常量指针

二、auto类型与decltype类型的区别

1、使用引用类型时:auto:使用引用实质上是使用引用的对象真正参与初始化的其实是引用对象的值

                                decltype:会识别为引用类型,还有当表达式的内容为解引用时,decltype将会得到引用类型

如:

int i=0,&r=i,*p=&i;
auto a=r;//此时a 为 int 形

decltype(r)b=i;//此时b为int & 形,是引用
decltype(*p)c=i;//此时c为int &形式,是引用,c为i的引用;

2、当decltype(()),有双层括号时,此时所得到的一定是一个引用类型。decltype(),单括号时只有当括号内的值为引用类型,返回的才是引用类型。

猜你喜欢

转载自blog.csdn.net/laifengyuan1/article/details/81035894