在C++中,可以通过定义成员函数或非成员函数来实现运算符重载。以下是一些示例代码:
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r, double i) : real(r), imaginary(i) {}
Complex operator+(const Complex& other) {
return Complex(real + other.real, imaginary + other.imaginary);
}
};
int main() {
Complex c1(1, 2);
Complex c2(3, 4);
Complex result = c1 + c2;
return 0;
}
class Number {
private:
int value;
public:
Number(int v) : value(v) {}
Number& operator++() {
value++;
return *this;
}
};
int main() {
Number num(5);
++num;
return 0;
}
#include <iostream>
class Complex {
private:
double real;
double imaginary;
public:
Complex(double r, double i) : real(r), imaginary(i) {}
friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << c.real << " + " << c.imaginary << "i";
return os;
}
};
int main() {
Complex c(1, 2);
std::cout << c << std::endl;
return 0;
}
需要注意的是,运算符重载一般应该符合运算符的原有语义,遵循常规的运算符规则,并不应该引入令人困惑的行为。