重载运算符+,用于两个复数相加,用全局函数实现
时间: 2023-05-31 20:04:59 浏览: 109
重载运算符有哪些限制?-C++面向对象程序设计教程 第4章 运算符重载
以下是C++代码实现:
```cpp
#include <iostream>
class Complex {
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
Complex operator+(const Complex& rhs) const {
return Complex(real + rhs.real, imag + rhs.imag);
}
void print() const {
std::cout << real << " + " << imag << "i" << std::endl;
}
private:
double real;
double imag;
};
Complex operator+(const Complex& lhs, const Complex& rhs) {
return lhs + rhs;
}
int main() {
Complex c1(1, 2), c2(3, 4);
Complex c3 = c1 + c2; // 使用成员函数重载运算符
c3.print();
Complex c4 = operator+(c1, c2); // 使用全局函数重载运算符
c4.print();
return 0;
}
```
输出结果为:
```
4 + 6i
4 + 6i
```
其中,`Complex`类定义了一个成员函数 `operator+`,用于两个复数相加。而全局函数 `operator+` 也实现了相同的功能。在 `main` 函数中,我们分别使用了成员函数和全局函数重载运算符,得到了相同的输出结果。
阅读全文