C 返回物件和返回引用

2022-06-17 04:12:12 字數 311 閱讀 4465

我們發現,在c++中,有些成員函式返回的是物件,而有些函式返回的又是引用。

返回物件和返回引用的最主要的區別就是函式原型和函式頭。

car run(const car &)     //返回物件

car & run(const car &)   //返回引用

返回物件會涉及到生成返回物件的副本。因此,返回物件的時間成本包括了呼叫複製建構函式來生成副本所需的時間和呼叫析構函式刪除副本所需的時間。返回引用可以節省時間和記憶體。直接返回物件與按值傳遞物件類似,他們都生成臨時副本。同樣,返回引用與按引用傳遞物件類似,呼叫和被呼叫的函式對同乙個物件進行操作。

C 返回物件和返回引用

最大的區別在於,返回物件的話會在記憶體中根據返回的型別開闢一塊區域,用返回的值對該記憶體進行初始化,如果是返回的物件,利用拷貝構造來初始化這個區域,但是這塊區域並沒有名字,就是說之後使用者沒辦法訪問到這個區域,也成為無名變數,它只能在接下來的 中進行一次性的用途,要不作為引數傳遞,或者將值列印,再之...

c 返回變數和返回變數引用

int at int at 上面兩個函式,第乙個返回值是int的引用int 第二個返回值是int,二者的區別是什麼呢?我們先用乙個語句 const int a mymay.at 來分別呼叫一次上面兩個函式,然後看組合語言的結果。反彙編結果 1 int at 2 5600bb6830 push ebp...

C 箴言 必須返回物件時別返回引用

一旦程式設計師抓住物件傳值的效率隱憂,很多人就會成為狂熱的聖戰分子,誓要 傳值的罪惡,無論它隱藏多深。他們不屈不撓地追求傳引用的純度,但他們全都犯了乙個致命的錯誤 他們開始傳遞並不存在的物件的引用。這可不是什麼好事。考慮乙個代表有理數的類,包含乙個將兩個有理數相乘的函式 class rational...