在 C++ 中,运算符重载(Operator Overloading)允许我们为自定义类型定义运算符的行为。通过运算符重载,我们可以使用自定义类型的对象,就像使用内置类型一样,进行常见的运算操作。
C++ 支持重载大部分的运算符,如算术运算符(`+`、`-`、`*`、`/` 等)、比较运算符(`<`、`>`、`==`、`!=` 等)、赋值运算符(`=`)、下标运算符(`[]`)等。
其中,`operator运算符` 是要重载的运算符,可以是内置运算符或自定义的运算符。例如,`+` 代表重载加法运算符,`<<` 代表重载输出流运算符。`返回类型` 是运算符的返回类型。
通过运算符重载,我们可以为自定义类型定义相应的操作,使其支持特定的语义和行为。例如,可以重载 `+` 运算符,实现自定义类型的相加操作。
下面是一个示例,演示如何重载加法运算符 `+`:
class Vector {
public:
int x, y;
Vector operator+(const Vector& other) {
Vector result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
};
int main() {
Vector v1{2, 3};
Vector v2{4, 5};
Vector sum = v1 + v2;
// 等价于 Vector sum = v1.operator+(v2);
return 0;
}
在上述示例中,我们为自定义类 `Vector` 重载了加法运算符 `+`。在 `operator+` 函数中,我们定义了两个 `Vector` 对象相加的操作,并返回相加后的结果。通过重载 `+` 运算符,我们可以像操作内置类型一样,使用 `+` 运算符对 `Vector` 对象进行相加操作。
需要注意的是,运算符重载应遵循一定的规则和约定,以确保正确的语义和行为。应谨慎选择运算符重载的使用场景,以避免混淆和不必要的复杂性。