c++運算子過載中的兩種形式以及常引用的使用
阿新 • • 發佈:2018-12-31
下面是c++運算子過載的兩種形式:
形式1:
Point operator + (const Point& A,const Point& B)
{
return Point(A.x+B.x,A.y+B.y);
}
形式2:
ostream& operator << (ostream& out,const Point& p)
{
out<<'('<<p.x<<','<<p.y<<')';
return out;
}
1.形式1返回的是一個變數,常用的場合是兩個資料運算後得到第三個資料,不改變原來兩個資料。以加法為例:A+B->C
形式2返回的是一個引用,常用的場合是兩個資料運算後把結果存入到其中一個數據中,需要改變原來某一個的值。以輸出流運算為例:cout<<p->cout(新的)
2.由上面可知,形式2中我們希望改變cout的值,因此把形參宣告為ostream型的引用。但是,為什麼另外一個形參(包括形式1中的形參)為什麼要申明為引用呢?
原來,通常形參採用引用傳遞,是由於類物件佔用記憶體較大,引用傳遞時,無需在棧記憶體中開闢空間以裝載臨時物件,也省去了複製的耗時過程,為了避免改變形參的內容,還需配以const加以修飾。由於是引用,如果改變了形參,那個實參也會跟著改變。