C++ 运算符重载:自定义类型的运算扩展
在 C++ 中,运算符重载是静态多态的重要体现。它允许我们为类或结构体重新定义运算符的行为,让自定义对象能像内置类型(如 int、double)一样参与运算。这不仅能简化代码书写,提升可读性,还能统一操作风格,降低学习成本。
不过要注意,运算符重载不会改变运算符的优先级和结合性,也不会改变操作数的个数。理解这一点,是掌握重载的关键。
核心语法:成员函数与全局函数
运算符重载的本质是函数重载,分为成员函数重载和全局函数重载两种形式。
成员函数重载
将运算符函数定义为类的成员时,一元运算符没有参数,二元运算符只有一个参数(右侧操作数)。
class ClassName {
public:
ReturnType operatorOp(ParamList) {
// 自定义逻辑
}
};
全局函数重载
作为全局函数时,一元运算符有一个参数,二元运算符有两个参数。如果需要访问私有成员,需将其声明为友元。
ReturnType operatorOp(ParamList) {
// 自定义逻辑
}
常见运算符实现细节
二元运算符:以 + 为例
下面是一个 Point 类的示例,演示如何重载加法运算符。
成员函数方式
#include <iostream>
using namespace std;
class Point {
public:
int x, y;
Point(int x = 0, int y = 0) : x(x), y(y) {}
// 成员函数重载 + 运算符
Point +( Point& p) {
(->x + p.x, ->y + p.y);
}
{
cout << << x << << y << << endl;
}
};
{
;
Point p3 = p1 + p2;
p();
;
}


