decltype(p)和decltype(*p)的區別

夢念祖發表於2020-10-18

decltype

decltype( p )

表明定義的是一個指標型別

#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)

表明定義的是一個引用型別

#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;
}

引用型別:引用相當於對所繫結的物件起的一個別名,對引用的操作相當於對其繫結的物件直接進行操作
引用本身不是一個物件,沒有記憶體空間

相關文章