设计一个复数Complex类,用友元函数重载乘法运算符(*),用成员函数重载除法运算符(/),完成两个复数对象的乘除法。
时间: 2024-02-11 21:05:59 浏览: 33
好的,我可以为您提供一个 C++ 的复数Complex类,实现重载乘法运算符和除法运算符的功能。
```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) {
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 denom = c.real * c.real + c.imag * c.imag;
double r = (real * c.real + imag * c.imag) / denom;
double i = (imag * c.real - real * c.imag) / denom;
return Complex(r, i);
}
void print() const {
cout << real << " + " << imag << "i" << endl;
}
};
int main() {
Complex c1(1, 2);
Complex c2(3, 4);
Complex c3 = c1 * c2;
cout << "c1 * c2 = ";
c3.print();
Complex c4 = c1 / c2;
cout << "c1 / c2 = ";
c4.print();
return 0;
}
```
在上面的代码中,我们定义了一个复数Complex类,其中包含了复数的实部和虚部。我们使用友元函数重载了乘法运算符(*),并使用成员函数重载了除法运算符(/)。在乘法运算符中,我们使用了公式 `(a+bi)*(c+di) = (ac-bd) + (ad+bc)i` 计算两个复数的乘积;在除法运算符中,我们使用了公式 `(a+bi)/(c+di) = (ac+bd)/(c^2+d^2) + (bc-ad)/(c^2+d^2)i` 计算两个复数的商。
在 `main` 函数中,我们定义了两个复数对象 `c1` 和 `c2`,并对它们进行了乘法运算和除法运算,最终输出了结果。
阅读全文