创建复数类complex,其中包含double型数据成员real和imag,分别表示复数的实域和虚域。为complex类重载运算符‘+’和‘-’,用来实现两个复数的加法和减法运算。要求用以下两种方法实现:重载函数为类的友元函数;重载函数为类的友元函数。
时间: 2024-02-24 13:59:05 浏览: 185
好的,我理解了你的问题。下面是一个示例代码,实现了你的要求:
```c++
#include<iostream>
using namespace std;
class complex{
private:
double real;
double imag;
public:
complex(double r = 0, double i = 0):real(r), imag(i){}
friend complex operator+ (const complex& c1, const complex& c2);
friend complex operator- (const complex& c1, const complex& c2);
void display(){
cout << real << " + " << imag << "i" << endl;
}
};
complex operator+ (const complex& c1, const complex& c2){
return complex(c1.real+c2.real, c1.imag+c2.imag);
}
complex operator- (const complex& c1, const complex& c2){
return complex(c1.real-c2.real, c1.imag-c2.imag);
}
int main(){
complex c1(1,2);
complex c2(3,4);
complex c3 = c1 + c2;
complex c4 = c2 - c1;
c1.display();
c2.display();
c3.display();
c4.display();
return 0;
}
```
在这个示例代码中,我们定义了一个名为 complex 的类,该类包含了两个私有成员变量 real 和 imag,分别表示复数的实部和虚部。我们还定义了构造函数,用于初始化这两个成员变量。
然后,我们重载了加号运算符和减号运算符,并将其定义为类的友元函数。在这两个函数中,我们分别实现了复数的加法和减法运算,并返回一个新的复数对象。
最后,在主函数中,我们创建了两个复数对象 c1 和 c2,并进行加法和减法运算,将结果保存在新的复数对象 c3 和 c4 中,并调用 display 函数将结果输出。
阅读全文