運載符過載三(賦值 ,邏輯)

2021-08-17 05:20:15 字數 968 閱讀 6209

賦值過載運算子:  類名 &   operator=(const 類名& 變數名)

乙個空類中至少有四個函式:無參建構函式、拷貝建構函式、析構函式、賦值運算子過載函式

#include #include using namespace std;

class student

void show()

/*賦值運算子: 類名& operator=(const 類名 &變數名)

student& operator=(const student &s)

如果不寫,編譯器會自動生成

*/private:

int id;

char *name;

};int main1()

class teacher

teacher(const teacher &t)//拷貝建構函式

~teacher()//析構函式

/*存在的問題,如果自己給自己賦值則存在會丟失原來空間內的值

teacher& operator=(const teacher &t)

*///正確賦值過載(涉及空間)

teacher& operator=(const teacher &t)

private:

int id;

char *name;

};// 過載<<,實現直接輸出teacher類的內容

ostream& operator<< (ostream& out, teacher &t)

int main2()

與拷貝構造一樣不要輕易地寫賦值過載,一般將賦值運算子和拷貝過載設為私有,形式如下

class a

class a

bool operator&&(const a& a)

public:

int a;

};//不要過載邏輯運算子

int main5()

過載賦值運算子

1 注意過載賦值運算子和,運算子必須定義為類的成員函式。2 注意 如果程式不提供顯示的賦值運算子則系統會提供乙個預設的賦值運算子。3 什麼時候過載賦值運算子 當類中含有指標成員時,一般都要重定義類的賦值運算子。4 過載賦值運算子時應有處理語句m m的情況。其中m是某乙個類的物件。如果不處理這樣的語句...

賦值運算子過載

在下面類中實現 class cmystring 為了寫出乙個完整的賦值運算子過載函式,我們要考慮以下幾個問題 一步步解決上述的問題,我們可以編寫出經典的演算法 cmystring cmystring operator const cmystring str return this 考慮到異常安全性的...

賦值運算子過載

c 為了增強 的可讀性引入了運算子過載,運算子過載是具有特殊函式名的函式,也具有其返回值類 型,函式名字以及引數列表,其返回值型別與引數列表與普通的函式類似。函式名字為 關鍵字operator後面接需要過載的運算子符號。注意 函式原型 返回值型別 operator操作符 引數列表 class dat...