pointers使用“*”和“->”操作符,references則使用“.”
1.沒有所謂的null reference。一個reference必須總代表某個對象,pointer可以設置為null。也就是說,如果這個變量總是必須代表一個對象,不允許把這個變量設置為null,那么就要使用reference。
2.由于reference一定得代表某個對象,C++因此要求references必須有初值。但是pointers就沒有這樣的限制。
3.“沒有所謂的null reference”這個事實意味使用references可能會比使用pointers更富效率。這是因為使用reference之前不需要測試其有效性(是否為空指針)。
4.pointers和references之間的另一個重要差異就是,pointers可以被重新賦值,指向另一個對象,reference卻總是指向(代表)它最初獲得的那個對象。
結論:當你知道你需要指向某個東西,而且絕不會改變指向其他東西,或是當你實現一個操作符而其語法需求無法由pointers達成,你就應該選擇references。任何其他時候,請采用pointers。
博文摘要:
從概念上講。指針從本質上講就是存放變量地址的一個變量,在邏輯上是獨立的,它可以被改變,包括其所指向的地址的改變和其指向的地址中所存放的數據的改變。
而引用是一個別名,它在邏輯上不是獨立的,它的存在具有依附性,所以引用必須在一開始就被初始化,而且其引用的對象在其整個生命周期中是不能被改變的(自始至終只能依附于同一個變量)。
相同點:
都是地址的概念;指針指向一塊內存,它的內容是所指內存的地址;而引用則是某塊內存的別名。
不同點:
1.指針是一個實體,而引用僅是個別名;
2.引用只能在定義時被初始化一次,之后不可變;指針可變;
3.引用沒有const,指針有const,const的指針不可變;
4.引用不能為空,指針可以為空;
5.“sizeof 引用”得到的是所指向的變量(對象)的大小,而“sizeof 指針”得到的是指針本身的大?。?/p>
6.指針和引用的自增(++)運算意義不一樣;
7.引用是類型安全的,而指針不是 (引用比指針多了類型檢查)
新聞熱點
疑難解答
圖片精選