什麼時候需要將引用作為返回值

2021-08-21 02:56:42 字數 536 閱讀 4774

格式:

型別識別符號 &函式名(形參列表及型別說明)

優點:在記憶體中不產生被返回值的副本,從而大大提高了程式的安全性與效率

注意事項:

不能返回區域性變數的引用。區域性變數由於儲存在棧區,在函式返回後會被銷毀,因此被返回的引用就成為了「無所指」的引用,程式會進入未知狀態,引起函式錯誤甚至崩潰

不能返回函式內部「new」分配的空間的引用。例如,**書返回的引用指示作為乙個臨時變數出現,而沒有被賦予乙個實際的變數,那麼這個引用所指向的空間(由new分配)就無法 釋放,造成記憶體洩露。

可以返回類成員的引用,但最好是常引用型別。當物件的屬性與某種業務規則相關聯時,其複製常常與某些其他屬性或物件的狀態有關,因此有必要將賦值操作封裝在乙個業務規則中,如果其他物件可以獲得該屬性的非常量引用(或指標),那麼對該屬性的單純賦值就會破壞業務規則的完整性

流操作符《和》。一般這兩個操作符連續使用,因此這兩個操作符的返回值應該是乙個仍支援這兩個操作符的流引用。在另外的一些操作符中,不能返回引用+-*/四則運算符。由於這四個操作符沒有***,因此它們必須構造乙個物件作為返回值。

什麼時候需要將引用作為返回值

將引用作為函式返回值型別的格式如下所示 型別識別符號 函式名 形參列表及型別說明 將引用作為返回值的優點是 在記憶體中不產生被返回值的副本,從而大大提高了程式的安全性和效率。具體而言,將引用作為函式函式返回值型別的格式一般要注意一下4點內容 1 當返回乙個引用時,要注意被引用的物件不能超出作用域。所...

引用作為返回值 多型

1 引用作為返回值,必須遵守以下規則 1 不能返回區域性變數的引用。這條可以參照effective c 1 的item 31。主要原因是區域性變數會在函式返回後被銷毀,因此被返回的引用就成為了 無所指 的引用,程式會進入未知狀態。2 不能返回函式內部new分配的記憶體的引用。這條可以參照effect...

將引用作為函式返回值

要以引用返回函式值,則函式定義時必須遵循以下格式 型別識別符號 函式名 形參列表及型別說明 可見,以引用返回函式值,定義函式時需要在函式名前加 引用作為函式的返回值時,函式的返回值可以理解為函式返回了乙個變數 事實上,函式返回引用時,它返回的是乙個指向返回值的隱式指標 因此,值為引用的函式可以用作賦...