用c++代码设计一个复数Complex类,用友元函数重载乘法运算符(*),用成员函数重载除法运算符(/),完成两个复数对象的乘除法。 加法:(a+bi)+(c+di)=(a+c)+(b+d)i; 减法:(a+bi)-(c+di)=(a-c)+(b-d)i; 乘法:(a+bi)*(c+di)=(ac-bd)+(ad+bc)i; 除法:(a+bi)/(c+di)=((a+bi)*(c-di))/(c*c+d*d);要求:代码简单有效,不报错
时间: 2023-10-27 11:04:36 浏览: 147
以下是一个简单有效的实现:
```cpp
#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) {
double r = c1.real * c2.real - c1.imag * c2.imag;
double i = c1.real * c2.imag + c1.imag * c2.real;
return Complex(r, i);
}
Complex operator/(const Complex &c) {
double den = c.real * c.real + c.imag * c.imag;
double r = (real * c.real + imag * c.imag) / den;
double i = (imag * c.real - real * c.imag) / den;
return Complex(r, i);
}
Complex operator+(const Complex &c) {
double r = real + c.real;
double i = imag + c.imag;
return Complex(r, i);
}
Complex operator-(const Complex &c) {
double r = real - c.real;
double i = imag - c.imag;
return Complex(r, i);
}
void print() {
cout << real << " + " << imag << "i" << endl;
}
};
int main() {
Complex c1(3, 4);
Complex c2(2, -1);
Complex c3 = c1 * c2;
cout << "c1 * c2 = ";
c3.print();
Complex c4 = c1 / c2;
cout << "c1 / c2 = ";
c4.print();
Complex c5 = c1 + c2;
cout << "c1 + c2 = ";
c5.print();
Complex c6 = c1 - c2;
cout << "c1 - c2 = ";
c6.print();
return 0;
}
```
在这个代码中,我们定义了一个名为`Complex`的类,它包含两个数据成员`real`和`imag`,分别表示复数的实部和虚部。我们在类中定义了一个友元函数`operator*`,用于重载乘法运算符,以便我们可以在两个`Complex`对象上执行乘法操作。我们还定义了一个成员函数`operator/`,用于重载除法运算符,使我们可以在`Complex`对象上执行除法操作。此外,我们还定义了成员函数`operator+`和`operator-`,以实现加法和减法运算。最后,我们定义了一个`print`函数,以便在屏幕上打印出`Complex`对象的值。
在`main`函数中,我们创建了两个`Complex`对象`c1`和`c2`,并使用重载的乘法运算符计算它们的乘积。我们还使用重载的除法运算符计算它们的商,并使用重载的加法和减法运算符计算它们的和和差。最后,我们在屏幕上打印出这些结果。
阅读全文