運算子過載 的注意

2021-06-18 10:06:01 字數 375 閱讀 2084

=操作符過載函式不能為友元函式,只能為某類中的成員函式.

假如將賦值運算子過載為dog類的友元:

friend dog operator=( dog &d1, dog &d2)

例如有表示式 x = y;可以正確的將y賦值給x; x,y都是dog類的物件。

又例如有一表示式99 = y;它被解釋為operator=(99, y);

c++編譯器將99轉換為乙個dog類的物件(隱含的臨時變數),然後使形參引用物件,因此這是個正確的表示式。但按c++的規定(99=y常量怎能賦值),這樣的表示式應是錯誤的,為了保證與c++規定的賦值語義相一致,應將賦值運算子過載為類運算子。

同樣,也應將+=,-=等這些賦值運算子過載為類運算子!

運算子過載 賦值運算子的過載

有時候希望賦值運算子兩邊的型別可以不匹配,比如,把乙個int型別變數賦值給乙個complex物件,或把乙個 char 型別的字串賦值給乙個字串物件,此時就需要過載賦值運算子 注意 賦值運算子 只能過載為成員函式 賦值運算子過載例項示例 include include using namespace ...

運算子過載的注意事項

在 c 中進行運算子過載時的注意事項 c 規定,運算子過載不改變運算子的優先順序。以下運算子不能被過載 sizeof 過載運算子 賦值運算子 和型別強制轉換運算子 時,只能將它們過載為成員函式,不能過載為全域性函式。必要時需要過載賦值運算子 即進行深拷貝,以避免兩個物件內部的指標指向同一片儲存空間。...

運算子過載 類的賦值運算子過載

下面介紹類的賦值運算子 1.c 中物件的記憶體分配方式 在c 中,物件的例項在編譯的時候,就需要為其分配記憶體大小,因此,系統都是在stack上為其分配記憶體的。這一點和c 完全不同!千 萬記住 在c 中,所有類都是reference type,要建立類的實體,必須通過new在heap上為其分配空間...