C++引用(左值引用,右值引用)
阿新 • • 發佈:2019-02-09
特點:
引用:引用本質指標實現。
引用一旦初始化, 不會引用其他變數。
右值引用目的:快速建立暫存器資料的引用,就是還沒有記憶體實體的資料可以立即建立一個引用。
(一般寫模板函式有一個左值引用的模板函式,都會對應一個右值引用的模板函式,即使實現程式碼是相同的。)
左值:有記憶體實體
右值:暫存器的值
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