在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
,并使用重载的运算符对它们进行操作。最后,我们将结果输出到控制台。