在C++中,運算符重載允許你為自定義類型(如類或結構體)定義運算符的行為。要實現算術運算符重載,你需要重載以下運算符:
以下是一個簡單的示例,展示了如何為一個名為MyNumber
的類實現這些運算符重載:
#include <iostream>
class MyNumber {
public:
MyNumber(int value) : value_(value) {}
// 加法運算符重載
MyNumber operator+(const MyNumber& other) const {
return MyNumber(value_ + other.value_);
}
// 減法運算符重載
MyNumber operator-(const MyNumber& other) const {
return MyNumber(value_ - other.value_);
}
// 乘法運算符重載
MyNumber operator*(const MyNumber& other) const {
return MyNumber(value_ * other.value_);
}
// 除法運算符重載
MyNumber operator/(const MyNumber& other) const {
return MyNumber(value_ / other.value_);
}
// 取模運算符重載
MyNumber operator%(const MyNumber& other) const {
return MyNumber(value_ % other.value_);
}
// 負數運算符重載
MyNumber operator-() const {
return MyNumber(-value_);
}
// 正數運算符重載
MyNumber operator+() const {
return MyNumber(value_);
}
// 輸出運算符重載
friend std::ostream& operator<<(std::ostream& os, const MyNumber& number) {
os << number.value_;
return os;
}
private:
int value_;
};
int main() {
MyNumber a(5);
MyNumber b(3);
MyNumber c = a + b;
MyNumber d = a - b;
MyNumber e = a * b;
MyNumber f = a / b;
MyNumber g = a % b;
std::cout << "a + b = "<< c << std::endl;
std::cout << "a - b = "<< d << std::endl;
std::cout << "a * b = "<< e << std::endl;
std::cout << "a / b = "<< f << std::endl;
std::cout << "a % b = "<< g << std::endl;
return 0;
}
在這個示例中,我們定義了一個名為MyNumber
的類,它包含一個私有成員變量value_
。我們為這個類重載了加法、減法、乘法、除法、取模、負數和正數運算符。此外,我們還重載了輸出運算符(<<),以便在控制臺上打印MyNumber
對象。
在main
函數中,我們創建了兩個MyNumber
對象a
和b
,并使用重載的運算符對它們進行操作。最后,我們將結果輸出到控制臺。