返回引用的意義

2021-08-26 03:07:10 字數 527 閱讀 2906

1.可以作為左值cardid()=c

int & cardid()

static int icardid;

return icardid;

引用作為返回值,必須遵守以下規則:

(1)不能返回區域性變數的引用。主要原因是區域性變數會在函式返回後被銷毀,因此被返回的引用就成為了"無所指"的引用,程式會進入未知狀態。

(2)不能返回函式內部new分配的記憶體的引用。雖然不存在區域性變數的被動銷毀問題,可對於這種情況(返回函式內部new分配記憶體的引用),又面臨其它尷尬局面。例如,被函式返回的引用只是作為一 個臨時變數出現,而沒有被賦予乙個實際的變數,那麼這個引用所指向的空間(由new分配)就無法釋放,造成memory leak。

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

引用 include「stdafx h 的意義

在.cpp源程式中,我們常常會發現這樣的標頭檔案中,這樣的引用 include stdafx.h includeusing namespace std 介紹 所謂標頭檔案預編譯,就是把乙個工程 project 中使用的一些mfc標準標頭檔案 如windows.h afxwin.h 預先編譯,以後該工...

引用的意義與本質

1 引用作為其它變數的別名而存在,因此在一些場合可以代替指標 2 引用相對於指標來說具有更好的可讀性和實用性 引用本質思考 思考1 c 編譯器背後做了什麼工作?include using namespace std int main 引用是乙個有位址,引用是常量。char const p 引用的本質...

右值引用的意義

首先理解深拷貝和淺拷貝 以字串string為例,我們知道string內維護了乙個char指標,指向乙個堆物件。所謂的深拷貝,就是在拷貝的時候複製這個char指向的堆物件,所謂的淺拷貝就是不複製,直接用char 指標指向這個堆物件,這時候就會導致兩個指標指向同乙個物件,當乙個string物件析構的時候...