1. 程式人生 > >C++引用(左值引用,右值引用)

C++引用(左值引用,右值引用)

特點:

引用:引用本質指標實現。

引用一旦初始化, 不會引用其他變數。

       右值引用目的:快速建立暫存器資料的引用,就是還沒有記憶體實體的資料可以立即建立一個引用。

(一般寫模板函式有一個左值引用的模板函式,都會對應一個右值引用的模板函式,即使實現程式碼是相同的。)

左值:有記憶體實體

右值:暫存器的值

move()把左值當做右值。

事例:

引用作為引數:更改引數的內容

namespace main3n
{
	int num2 = 20;
	//改變引數內容的功能。
	void change(int*&rp)
	{
		rp = &num2;
	}
}
void main3()
{
	using namespace main3n;
	int num1(10);
	int *p(&num1);
	change(p);
	cout << *p << endl;
	cin.get();
}

引用的注意事項:
//引用的返回值
//不可返回棧上的引用
namespace main5
{
	int &getdata()
	{
		int num = 10;
		return num;
	}
}
void main5n()
{
	using namespace main5;
	int &rnum(getdata());
	cout << rnum << endl;
	cout << "afadsd" << endl;
	cout << rnum;

	cin.get();
}



左值引用

簡單用法

  int a(4);
	int *p(new int(5));
	int &ra(a);
	int *(&rp)(p);
	int &&rra(move(a));
	int *(&&rrp)(move(p));


證明引用是一個指標的程式碼
double  db;
doublie &rdb(db);
sizeof(rdb);//8編譯器的憂化,變數名的別名
struct MyString
{
double &rdb;
}
sizeof(MyString)   //4