引用

好記發表於2018-09-17

一:簡單介紹

引用又稱別名,一般指左值引用。

使用方式:型別 &引用變數 = 初始值;

引用必須初始化,初始值必須是一個有記憶體的地址物件;

引用一旦繫結到物件,將無法繫結其他物件;

右值是為了支援移動操作,是一個臨時數,不能取地址;

定義形式:型別 &&右值引用變數 = 右值表示式;

二:比較分析

1)引用VS賦值:

 初始化變數:初始值會被複制到物件中;變數可以修改;

初始化引用:繫結一個變數(存地址);引用初始化後不可修改;

引用不是物件,它是物件的別名(只是物件的起始地址),引用被實現為與所引物件相同的記憶體地址;

2)引用VS指標:

指標可以指向同型別的不同的物件;引用不行;

引用是物件的一個別名,定義時必須是有記憶體地址的物件進行初始化;指標是擁有獨立記憶體的變數,可以改變它的內容;

指標通過解引用*使用,引用直接使用;

指標可以不指向任何物件,為0,引用不可,必須初始化;

指標的賦值改變的是指向關係,引用的賦值改變的是物件的值(引用關係是不可變的);

3)左值引用VSz右值引用:

右值不能取地址,左值有地址,有名字;

常數是右值,變數是左值;

可以顯式 的把左值變為右值,右值不能變成左值;

方法:int r1=0;

int &&r2=std::move(r1);

 

相關文章