创建复数类complex,其中包含double型数据成员real和imag,分别表示复数的实域和虚域。为complex类重载运算符‘+’和‘-’,用来实现两个复数的加法和减法运算。要求用以下两种方法实现:重载函数为类的友元函数;重载函数为类的友元函数。
时间: 2024-02-20 19:00:54 浏览: 61
好的,下面是实现这个问题的代码示例:
```c++
#include <iostream>
using namespace std;
class complex {
private:
double real, imag;
public:
complex(double r = 0, double i = 0) : real(r), imag(i) {}
friend complex operator+(const complex& c1, const complex& c2) {
return complex(c1.real + c2.real, c1.imag + c2.imag);
}
friend complex operator-(const complex& c1, const complex& c2) {
return complex(c1.real - c2.real, c1.imag - c2.imag);
}
void print() {
cout << "(" << real << ", " << imag << "i)" << endl;
}
};
int main() {
complex c1(1, 2);
complex c2(3, 4);
complex c3 = c1 + c2;
c3.print();
complex c4 = c1 - c2;
c4.print();
return 0;
}
```
在这个示例中,我们定义了一个复数类 `complex`,其中包含了两个数据成员 `real` 和 `imag`,表示实部和虚部。我们重载了运算符 `+` 和 `-`,并将它们声明为友元函数。在这些函数中,我们通过两个复数的实部和虚部相加或相减来实现两个复数的加减运算。最后,我们在 `main` 函数中使用这些运算符进行测试,并输出结果。
阅读全文