- 格式: 類型標識符 &函數名(形參列表及類型說明){//函數體}
- 好處: 在內存中不產生返回值的副本(返回一個局部變量的引用是不可取的,因為隨着局部變量生存周期的結束,相應的引用也會失效,產生runtime error)
- 注意:
- 不能返回局部變量的引用,局部變量會在函數返回后被銷毀。
- 不能返回函數內部new分配的內存的引用,雖然不存在局部變量的被動銷毀問題,但是函數返回的引用只是作為一個臨時變量出現,並沒有被賦予一個實際的變量,導致引用所指向的空間無法釋放。
- 可以返回類成員的引用,但最好是const,主要原因是當對象的屬性與某種業務規則相關聯的時候,其賦值常常與某些其它屬性或者對象的狀態相關聯,因此有必要將賦值操作封裝在一個業務規則中,如果其它對象可以獲得該屬性的非常量引用(或指針),那么對於該屬性的單純賦值就會破壞業務規則的完整性。
- 流操作符重載返回值申明為“引用”的作用:<<和>>常常希望被連續使用,因此這兩個操作符的返回值應該是一個仍然支持這兩個操作符的流引用。可選方案包括:返回一個流對象和返回一個流對象指針。返回一個流對象,程序必須重新構造一個新的流對象,兩個<<操作符實際上是針對了不同對象;返回一個流對象指針,並不能連續使用<<操作符。返回一個流對象引用則是唯一選擇。