C++----引用

1、什麼是引用?申明和使用引用要注意哪些問題?
答:引用就是某個變量的別名,對應用的操作與對變量直接操作相同。
(1)初始化:申明一個引用的時候切記要對它進行初始化引用申明完畢後。
(2)引用名不可另外賦值:相當於目標變量名有兩個名稱,即目標原名和引用名。不能把該引用名作爲其他變量別名。
引用本身不佔據存儲單元,系統也不會給引用分配存儲單元。
(3)不能建立數組的引用
2、將引用作爲函數參數有哪:些特點?
答:(1)傳遞引用給函數與傳遞指針的效果是一樣的。這時,被調函數的形參就成爲原來主調函數中實參變量或對象的一個別名來使用,所以在被調函數中對形參變量的操作就是對其相應的目標對象的操作
(2)用引用比用一般變量傳遞參數的效率和所佔空間都好。使用引用傳遞函數的參數,在內存中並沒有產生實參的副本,它是直接對實參操作。
(3)使用指針作爲函數的參數雖然也能達到使用引用的效果,但是,在被調函數中同樣要給形參分配存儲單元,且需要重複使用“*指針變量名”的形式進行計算,這很容易產生錯誤且程序的可讀性較差;另一方面在主函數的調用點處,必須用變量的地址作爲實參。而引用更容易使用更清晰。
3、在什麼時候需要使用“常引用”?
答:如果既要利用引用提高程序的效率,又要保護傳遞給函數的數據不在函數中被改變,就應使用常引用。常引用的聲明方式爲:const 類型標識符 &引用名 = 目標變量名。
int a;
const int &ra = a;
示例2:
string foo( );
void bar(string&s)
// 那麼下面的表達式將是非法的:
bar("hello world");
因爲“hello world”是const的,而上面的表達式試圖將一個const類型的對象轉化爲非const的,是非法的。
引用類型參數應該在能被定義爲const的情況下,儘量定義爲const。
4、將引用作爲函數返回值類型的格式、好處和需要遵守的規則?
答:
格式:
類型標識符 &函數名(形參列表以及類型說明)
{
//函數體
}
好處:在內存中不產生被返回值的副本;(注意:正因爲這一點,所以返回值不能是局部變量,因爲隨着局部變量生存週期的結束,相應的應用也會結束,相應的引用也會失效,產生return error;)
注意:
(1)不能返回局部變量的引用。主要原因是局部變量會在函數返回後被銷燬,因此返回的引用就成爲無所指的引用,程序進入位置狀態。
(2)不能返回函數內部new分配的內存引用。因爲雖然不存在內存被銷燬問題,但是會出現其他問題,例如,被函數返回的引用只是作爲一個臨時變量出現,而沒有被賦予一個實際變量,那麼這個引用所指向的空間就無法被釋放,造成內存泄漏。

 

發佈了17 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章