C++知識點(13)_返回對象用“引用“還是“值“?

看一個例子:這裏有一個時間類Time.對兩個時間求和。

Time Time::Sum(const Time& t) const
{
	Time sum;
	sum.minutes=this->minutes+t.minutes;
	sum.hours=this->hours+t.hours+sum.minutes/60;
	sum.minutes%=60;
	return sum;
}

知識點1:返回對象應該用”引用“還是”值“?
一般來說,值傳遞的方式會創建對象的副本,這上述程序中sum 爲局部變量,因此作用域僅在函數內,函數結束會自動釋放sum所佔內存,通過返回”值“,在刪除sum 之前會構造拷貝。
如果返回類型爲Time&,也即是說返回值與局部變量sum指向同一片內存,sum在函數結束時被刪除,返回”引用“則指向一個不存在的對象。
因此:不要返回指向局部變量或臨時對象的引用
這裏延伸兩個知識點

知識點2:兩個const各起什麼作用?
第一個const:修飾參數,表示所傳遞的參數,在函數內的操作,不允許修改值;
第二個const:常成員函數,表示該函數可以訪問本類中的數據成員,但是不允許修改。

知識點3:this指針的含義?
this指針,即指向本類對象的指針,值爲當前被調用的成員函數所在的對象的起始地址。
在這裏是將兩個時間求和,其中一個操作數就是通過this指針作隱式傳遞
另外一個指針作爲函數參數作顯式傳遞。當然,我們也可以把兩個操作數均作爲參數傳遞。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章