设计一个复数 Complex 类,用友元函数重载乘法运算符(*),用成员函数重 载除法运算符(D,完成两个复数对象的乘除法。 加法:(atbi) +(ctdi) = (atc) + (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 13:05:56 浏览: 109
好的,我来设计一个复数 Complex 类,并实现乘除法运算符的重载。以下是代码实现:
```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) {}
// 重载加法运算符
Complex operator+ (const Complex& c) const {
return Complex(real + c.real, imag + c.imag);
}
// 重载减法运算符
Complex operator- (const Complex& c) const {
return Complex(real - c.real, imag - c.imag);
}
// 重载乘法运算符
friend Complex operator* (const Complex& c1, const Complex& c2) {
return Complex(c1.real * c2.real - c1.imag * c2.imag, c1.real * c2.imag + c1.imag * c2.real);
}
// 重载除法运算符
Complex operator/ (const Complex& c) const {
double denominator = c.real * c.real + c.imag * c.imag;
return Complex((real * c.real + imag * c.imag) / denominator,
(imag * c.real - real * c.imag) / denominator);
}
void display() const {
cout << "(" << real << " + " << imag << "i)" << endl;
}
};
int main() {
Complex c1(1, 2);
Complex c2(3, 4);
Complex c3 = c1 + c2;
c3.display();
Complex c4 = c1 - c2;
c4.display();
Complex c5 = c1 * c2;
c5.display();
Complex c6 = c1 / c2;
c6.display();
return 0;
}
```
在上述代码中,我们重载了加、减、乘、除四种运算符,其中加、减运算符的重载使用了成员函数,乘、除运算符的重载使用了友元函数。这是因为乘、除运算符需要访问两个复数对象的实部和虚部,因此使用友元函数便于访问。
在 main 函数中,我们分别创建了两个复数对象 c1 和 c2,并对它们进行了加、减、乘、除运算,结果保存在新的复数对象中,并通过 display 函数打印出来。
阅读全文