1、 设计一个复数Complex类,用友元函数重载乘法运算符(*),用成员函数重载除法运算符(/),完成两个复数对象的乘除法。加法(a+bi)+(c+di)=(a+c)+(b+d)i
时间: 2024-03-02 12:49:38 浏览: 61
定义复数类Complex,进行运算符重载
5星 · 资源好评率100%
好的,以下是一个复数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& a, const Complex& b); // 友元函数重载乘法运算符
Complex operator/(const Complex& a); // 成员函数重载除法运算符
Complex operator+(const Complex& a); // 成员函数重载加法运算符
void display(); // 显示复数值
};
Complex operator*(const Complex& a, const Complex& b) {
Complex res;
res.real = a.real * b.real - a.imag * b.imag;
res.imag = a.real * b.imag + a.imag * b.real;
return res;
}
Complex Complex::operator/(const Complex& a) {
Complex res;
double denominator = a.real * a.real + a.imag * a.imag;
res.real = (real * a.real + imag * a.imag) / denominator;
res.imag = (imag * a.real - real * a.imag) / denominator;
return res;
}
Complex Complex::operator+(const Complex& a) {
Complex res;
res.real = real + a.real;
res.imag = imag + a.imag;
return res;
}
void Complex::display() {
if (imag >= 0)
cout << real << "+" << imag << "i" << endl;
else
cout << real << imag << "i" << endl;
}
int main() {
Complex a(1, 2), b(3, -4), c;
c = a * b;
cout << "a * b = ";
c.display();
c = a / b;
cout << "a / b = ";
c.display();
c = a + b;
cout << "a + b = ";
c.display();
return 0;
}
```
在这个代码中,我们定义了一个复数类Complex,包括实部和虚部两个私有成员变量。我们使用友元函数重载乘法运算符,用成员函数重载除法运算符和加法运算符,实现对复数的乘除加运算。
在主函数中,我们定义了两个复数a和b,并分别对它们进行乘除加运算,最后显示计算结果。
阅读全文