用C++代码,使用运算符重载,实现两个复数相除:先乘以分母的共轭复数,合并实部和虚部,最后得到最终商
时间: 2024-09-06 12:08:20 浏览: 73
复数运算问题 简单的C语言练习
在C++中,我们可以定义一个复数类,并在其内部重载除法运算符来实现两个复数相除的操作。以下是一个简单的示例代码:
```cpp
#include <iostream>
class Complex {
public:
double real;
double imag;
Complex(double r = 0.0, double i = 0.0) : real(r), imag(i) {}
// 运算符重载:乘以分母的共轭复数
Complex operator*(const Complex& other) const {
return Complex(real * other.real + imag * other.imag,
real * other.imag - imag * other.real);
}
// 运算符重载:输出复数
friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << "(" << c.real << " + " << c.imag << "i)";
return os;
}
};
// 运算符重载:实现复数相除
Complex operator/(const Complex& dividend, const Complex& divisor) {
Complex conjugate(-divisor.real, divisor.imag); // 分母的共轭复数
Complex product = dividend * conjugate; // 先乘以分母的共轭复数
double divisorNormSq = divisor.real * divisor.real + divisor.imag * divisor.imag; // 分母的模的平方
return Complex(product.real / divisorNormSq, product.imag / divisorNormSq); // 最后得到最终商
}
int main() {
Complex a(5, 2); // 实部为5,虚部为2的复数
Complex b(2, 3); // 实部为2,虚部为3的复数
Complex result = a / b;
std::cout << "Result of division: " << result << std::endl;
return 0;
}
```
在这个例子中,我们定义了两个运算符重载函数:
1. `operator*`:用于计算两个复数的乘积。
2. `operator/`:用于计算两个复数的商。
在`main`函数中,我们创建了两个`Complex`类的实例`a`和`b`,然后使用重载的除法运算符`/`来计算它们的商,并将结果输出到控制台。
阅读全文