運算子過載的倆邊為不同類的物件

2021-08-13 04:06:59 字數 705 閱讀 6247

#include "stdafx.h"

#include using namespace std;

#include #if 0

運算子過載實踐

結論:1,乙個操作符的左右運算元不一定是相同型別的物件,

這就涉及到將該操作符函式定義為誰的友元,誰的成員問題。

2,乙個操作符函式,被宣告為哪個類的成員,取決於

該函式的呼叫物件(通常是左運算元)。

3,乙個操作符函式,被宣告為哪個類的友員,取決於

該函式的引數物件(通常是右運算元)

#endif

class mail; //向前宣告

class sender

sender & operator<<(mail &mail);

private:

string _addr;

};class mail

friend sender & sender::operator<<(mail &mail);

private:

string _title;

string _contents;

string _time;

};sender & sender::operator<<(mail &mail)

int _tmain(int argc, _tchar* argv)

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

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

C 運算子過載時,將運算子兩邊物件交換問題

在c 進行運算子過載時,一般來講,運算子兩邊的物件的順序是不能交換的 比如下面的例子 include using namespace std class distance distance int f,int i 顯示距離的方法 void displaydistance 過載加運算子 distanc...

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

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