在C++中,运算符重载是一种允许你自定义已有运算符行为的方法。这可以使代码更易于阅读和理解,同时提高代码的可重用性。运算符重载的基本语法如下:
返回类型 operator运算符 (参数列表) { // 运算符重载的实现代码 }
以下是一些常见的运算符重载示例:
- 加法运算符重载:
class Complex { public: Complex(double real, double imag) : real_(real), imag_(imag) {} Complex operator+(const Complex& other) const { return Complex(real_ + other.real_, imag_ + other.imag_); } private: double real_; double imag_; };
- 乘法运算符重载:
class Complex { public: Complex(double real, double imag) : real_(real), imag_(imag) {} Complex operator*(const Complex& other) const { return Complex(real_ * other.real_ - imag_ * other.imag_, real_ * other.imag_ + imag_ * other.real_); } private: double real_; double imag_; };
- 重载小于运算符:
class Person { public: Person(const std::string& name, int age) : name_(name), age_(age) {} bool operator<(const Person& other) const { return age_ < other.age_; } private: std::string name_; int age_; };
- 重载函数调用运算符:
class MyClass {
public:
void print() const {
std::cout << "MyClass object" << std::endl;
}
};
MyClass operator()(const MyClass& obj) {
obj.print();
return obj;
}
注意:不是所有的运算符都可以被重载,例如赋值运算符(=)、比较运算符(==, !=, >, <, <=, >=)等。但是你可以为类定义自定义的运算符,只要它们符合C++的语法规则。