針對C++運算子多載 真的是頭大
今天寫了一個範例 怕自己忘記
運算子多載 會依照所寫的符號 去尋找對應的函數
實際上顯示的內容及運作還是要靠實作, 使用何種多載運算子符號與實作並不影響
符號只是找函數使用 例如在類別宣告 operator+() 定義函數時 也要寫上對應的operator+() 不然會找不到
內容如果寫成 以下形式,計算就會依照函數體內的內容進行計算,不會受到operator+()的 +所影響。
ken ken::operator+(const ken p) { // operator 符號為 +
a/=p.a; // 符號為 /=
b/=p.b;
return *this;
}
引數也可使用 & //(const ken &) 但函數宣告和定義都需要一致才行
函數宣告 ken operator/=(const ken &);
函數定義 ken ken::operator/=(const ken &p)
{
a/=p.a;
b/=p.b;
return *this;
}
就像函數多載一樣 ,就算函數外的operator運算符號和內部實作是兩碼事,
實作和內容最好相符 不然到時候可是會大混亂喔
#include "stdafx.h"
#include <iostream>
class ken {
public:
int a;
int b;
ken(int k, int t) { a = k, b = t; } //函式建構式
ken operator/=(const ken);
};
int main() {
ken a1(8,6);
ken a2(4,3);
a1/=a2;
std::cout << a1.a << std::endl;
std::cout << a1.b << std::endl;
system("pause");
return 0;
}
ken ken::operator/=(const ken p) {
a/=p.a;
b/=p.b;
return *this;
}
留言列表