c++ 运算符重载【】
时间: 2024-08-28 13:00:24 浏览: 46
C++运算符重载规则详解
5星 · 资源好评率100%
C++中的运算符重载是一种语言特性,允许开发者为类定义自己的运算符实现。通过运算符重载,可以让自定义类型表现得像内置类型一样,增强代码的可读性和易用性。
运算符重载本质上是函数重载的一种形式,它通过定义一个具有特殊名称的成员函数或非成员函数来实现。这个名称由关键字"operator"和要重载的运算符符号组成。运算符重载函数可以定义为类的成员函数,也可以定义为类的友元函数,某些情况下,为了保持对称性,最好定义为友元函数。
例如,如果我们有一个复数类Complex,我们可能想要重载加号运算符"+",以便能够使用加号来对两个Complex对象进行加法操作。
下面是一个简单的示例,展示了如何重载加号运算符:
```cpp
class Complex {
public:
double real;
double imag;
Complex(double r, double i) : real(r), imag(i) {}
// 成员函数重载加号运算符
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
};
// 这里也可以定义为友元函数
// friend Complex operator+(const Complex& c1, const Complex& c2);
// 使用示例
int main() {
Complex c1(1.0, 2.0);
Complex c2(2.0, 3.0);
Complex c3 = c1 + c2; // 调用重载的加号运算符函数
return 0;
}
```
注意,在重载运算符时,有一些规则和限制:
1. 不能创建新的运算符,只能重载已有的运算符。
2. 不能改变运算符的优先级和结合性。
3. 不能重载以下运算符:`::`(域解析运算符)、`.*`(成员指针访问运算符)、`?:`(三元条件运算符)、`.`(成员访问运算符)和`*`(成员指针访问运算符)。
4. 对于成员函数重载,某些运算符不能作为成员函数重载,例如赋值运算符"="、下标运算符"[]"、函数调用运算符"()"以及指针访问运算符"->"。
阅读全文