定义complex类,该类可以对所谓的负数进行操作,实现一下功能,(1)重载运算符<<(2)分别使用类函数和全局函数重载复数的+,编程测试两个复数的求和
时间: 2023-12-18 13:04:43 浏览: 67
下面是一个可能的实现:
```cpp
#include <iostream>
using namespace std;
class Complex {
private:
double real, imag;
public:
Complex(double r=0, double i=0) : real(r), imag(i) {}
friend ostream& operator<<(ostream&, const Complex&);
Complex operator+(const Complex&);
};
ostream& operator<<(ostream& os, const Complex& c) {
if (c.imag >= 0)
os << c.real << '+' << c.imag << 'i';
else
os << c.real << c.imag << 'i';
return os;
}
Complex Complex::operator+(const Complex& c) {
return Complex(real+c.real, imag+c.imag);
}
int main() {
Complex c1(1,2), c2(3,-4);
cout << "c1 = " << c1 << endl;
cout << "c2 = " << c2 << endl;
cout << "c1+c2 = " << c1 + c2 << endl;
return 0;
}
```
输出结果为:
```
c1 = 1+2i
c2 = 3-4i
c1+c2 = 4-2i
```
在上述代码中,我们首先定义了一个Complex类,其中real和imag分别表示实部和虚部。我们使用了默认参数来允许以0作为参数构造一个默认的复数。我们还使用了一个友元函数`operator<<`来打印一个复数。
接下来,我们重载了`operator+`,这样两个Complex对象就可以相加了。
最后,在主函数中,我们测试了这两个类函数的重载方式和全局函数的重载方式。
阅读全文