1. 程式人生 > >c++運算子過載中的兩種形式以及常引用的使用

c++運算子過載中的兩種形式以及常引用的使用

下面是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加以修飾。由於是引用,如果改變了形參,那個實參也會跟著改變。