c++中运算符重载的例子
时间: 2024-08-13 19:07:33 浏览: 35
运算符重载是C++中的一项特性,它允许程序员自定义特定运算符在特定类型上的行为。通过重载,我们可以为已有的基本运算符赋予新的意义,使其适用于我们的自定义类。下面是一个简单的例子,演示如何重载加法运算符 `+`:
```cpp
class ComplexNumber {
public:
// 数据成员
double real;
double imaginary;
// 构造函数
ComplexNumber(double r = 0, double i = 0) : real(r), imaginary(i) {}
// 重载加法运算符
ComplexNumber operator+(const ComplexNumber& other) const {
return ComplexNumber(real + other.real, imaginary + other.imaginary);
}
// 为了使表达式 "a + b" 和 "b + a" 结果相同,需要提供一个友元运算符重载版本
friend ComplexNumber operator+(const ComplexNumber& b, const ComplexNumber& a) {
return a + b; // 调用上面定义的 const 版本
}
};
int main() {
ComplexNumber c1(3, 4);
ComplexNumber c2(1, 2);
ComplexNumber c3 = c1 + c2; // 自动调用 ComplexNumber::operator+
std::cout << "c1 + c2 = (" << c3.real << ", " << c3.imaginary << ")" << std::endl;
return 0;
}
```
在这个例子中,我们重载了 `+` 运算符,使得 `ComplexNumber` 类的对象可以像普通复数一样相加。当对 `ComplexNumber` 类的实例进行加法操作时,编译器会根据运算符两侧的操作数类型和上下文选择合适的重载版本。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)