我們發現,在C++中,有些成員函數返回的是對象,而有些函數返回的又是引用。
返回對象和返回引用的最主要的區別就是函數原型和函數頭。
Car run(const Car &) //返回對象
Car & run(const Car &) //返回引用
返回對象會涉及到生成返回對象的副本。因此,返回對象的時間成本包括了調用復制構造函數來生成副本所需的時間和調用析構函數刪除副本所需的時間。返回引用可以節省時間和內存。直接返回對象與按值傳遞對象類似,他們都生成臨時副本。同樣,返回引用與按引用傳遞對象類似,調用和被調用的函數對同一個對象進行操作。
並不是總是可以返回引用的。比如函數不能返回在函數中創建的臨時對象的引用。因為當函數結束調用時,臨時對象將消失,因此這種引用是非法的。在這種情況下,應返回對象,以生成一個調用程序可以使用的副本。
原文鏈接:https://blog.csdn.net/wangtingze123/article/details/82895010
原文鏈接:https://blog.csdn.net/wangtingze123/article/details/82895010