C++ 运算符重载:让自定义类型支持自然运算
在 C++ 中,运算符重载是静态多态的重要体现。它允许我们重新定义运算符的行为,让自定义的类或结构体对象能够像内置类型一样使用 +、-、== 等符号。这不仅能简化代码书写,还能统一操作风格,降低学习和维护成本。
需要注意的是,运算符重载不会改变运算符的优先级和结合性,也不会改变操作数的个数。理解这一点,是掌握重载规则的前提。
核心语法:成员函数与全局函数
运算符重载的本质其实是函数重载,主要分为两种形式:成员函数重载和全局函数重载。
成员函数重载
将运算符函数定义为类的成员函数时,一元运算符(如 ++)没有参数,二元运算符(如 +)只有一个参数(表示右侧操作数)。
#include <iostream>
using namespace std;
class Point {
public:
int x, y;
Point(int x = 0, int y = 0) : x(x), y(y) {}
// 成员函数重载 + 运算符
Point operator+(const Point& p) {
return Point(this->x + p.x, this->y + p.y);
}
void print() {
cout << "(" << x << ", " << y << ")" << endl;
}
};
int main() {
Point p1(1, 2), p2(3, 4);
Point p3 = p1 + p2;
p();
;
}


