C++ 运算符重载:自定义类型运算扩展
运算符重载是 C++ 静态多态的重要体现,允许为自定义类型(如类、结构体)重新定义运算符的行为,让自定义对象可以像内置类型一样使用运算符。它的核心价值在于简化代码书写、统一操作风格以及根据业务需求扩展类型功能。需要注意的是,运算符重载不会改变运算符的优先级和结合性,也不会改变运算符的操作数个数。
基本语法与实现方式
运算符重载的本质是函数重载,分为成员函数重载和全局函数重载两种形式。
成员函数重载
将运算符重载函数定义为类的成员函数时,一元运算符(如 ++、--)没有参数,二元运算符(如 +、-)只有一个参数,表示运算符右侧的操作数。
class ClassName {
public:
ReturnType operatorOp(ParamList) {
// 自定义运算逻辑
}
};
全局函数重载
作为全局函数时,一元运算符有一个参数,二元运算符有两个参数。如果需要访问类的私有成员,可将全局重载函数声明为类的友元函数。
ReturnType operatorOp(ParamList) {
// 自定义运算逻辑
}
常见运算符的重载实践
二元运算符:以 + 为例
以自定义 Point 类为例,重载 + 运算符实现两个点的坐标相加。这里展示成员函数的写法,逻辑上等价于调用 p1.operator+(p2)。
#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(->x + p.x, ->y + p.y);
}
{
cout << << x << << y << << endl;
}
};
{
;
Point p3 = p1 + p2;
p();
;
}


