设计一个复数Complex类,用友元函数重载乘法运算符(*),用成员函数重载除法运算符(/),完成两个复数对象的乘除法。
时间: 2024-03-02 10:49:57 浏览: 94
好的,我会为你设计一个复数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); // 友元函数重载乘法运算符
Complex operator/(const Complex& c); // 成员函数重载除法运算符
void display() { cout << real << "+" << imag << "i" << endl; } // 显示复数
};
Complex operator*(const Complex& c1, const Complex& c2) {
Complex c;
c.real = c1.real * c2.real - c1.imag * c2.imag; // 计算实部
c.imag = c1.real * c2.imag + c1.imag * c2.real; // 计算虚部
return c;
}
Complex Complex::operator/(const Complex& c) {
Complex res;
double denominator = c.real * c.real + c.imag * c.imag;
res.real = (real * c.real + imag * c.imag) / denominator; // 计算实部
res.imag = (imag * c.real - real * c.imag) / denominator; // 计算虚部
return res;
}
int main() {
Complex c1(1, 2);
Complex c2(2, 3);
Complex c3 = c1 * c2; // 调用重载的乘法运算符
cout << "c1 * c2 = ";
c3.display();
Complex c4 = c1 / c2; // 调用重载的除法运算符
cout << "c1 / c2 = ";
c4.display();
return 0;
}
```
在上面的代码中,我们定义了一个复数Complex类,并实现了友元函数重载乘法运算符和成员函数重载除法运算符。在`main()`函数中,我们创建了两个复数对象`c1`和`c2`,并使用重载的乘法运算符和除法运算符来计算它们的乘积和商。最后,我们通过调用`display()`函数来显示结果。
阅读全文