1. 程式人生 > >成員函式返回的是物件和引用的區別

成員函式返回的是物件和引用的區別

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

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

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

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

        返回物件會涉及到生成返回物件的副本。因此,返回物件的時間成本包括了呼叫複製建構函式來生成副本所需的時間和呼叫解構函式刪除副本所需的時間。

返回引用可以節省時間和記憶體。直接返回物件與按值傳遞物件類似,他們都生成臨時副本。同樣,返回引用與按引用傳遞物件類似,呼叫和被呼叫的函式對同一個物件進行操作。

        並不是總是可以返回引用的。比如函式不能返回在函式中建立的臨時物件的引用。因為當函式結束呼叫時,臨時物件將消失,因此這種引用是非法的。在這種情況下,應返回物件,以生成一個呼叫程式可以使用的副本。