decltype
#include <iostream>
using namespace std;
int main()
{
int i = 1, j = 2;
int* p = &i;
decltype(p)a = &j;
cout << "p:" << p << "\t*p:" << *p << endl
<< "a:" << a << "\t*a:" << *a << endl;
return 0;
}
此处的decltype( p )定义的是一个与p类型相同的对象,而p的类型是指向int型的指针类型,所以定义的a也就是指向int型的指针
指针本身也是一个对象
#include <iostream>
using namespace std;
int main()
{
int i = 1, j = 2;
int* p = &i;
decltype(*p)a = j;
cout << "p:" << p << "\t*p:" << *p << endl
<< "&a:" << &a << "\ta:" << a << endl;
return 0;
}
此处decltype(*p)定义的是一个与 *p类型相同的对象,而 *p是一个int型引用类型,这是由于如果decltype()中表达式的内容是解引用操作则decltype得到的是引用类型,所以此处定义的a是一个int型的引用
引用类型:引用相当于对所绑定的对象起的一个别名,对引用的操作相当于对其绑定的对象直接进行操作
引用本身不是一个对象,没有内存空间