定义一个复数类 Complex,重载运算符“+”,“-”,“*”,“/”,使之能用于复数的加、减、 乘、除。运算符重载函数作为 Complex 类的成员函数。编程序,分别求两个复数之和、差、 积、商。
时间: 2023-12-18 10:09:23 浏览: 87
好的,这是一个比较基础的 C++ 编程问题,我可以帮您解决。
首先,我们需要定义一个 Complex 类,它包含两个私有变量,分别表示复数的实部和虚部。然后,我们需要重载加、减、乘、除四个运算符。具体实现如下:
```cpp
class Complex {
public:
Complex(double r = 0, double i = 0) : real(r), imag(i) {}
Complex operator+(const Complex& other) const {
return Complex(real + other.real, imag + other.imag);
}
Complex operator-(const Complex& other) const {
return Complex(real - other.real, imag - other.imag);
}
Complex operator*(const Complex& other) const {
return Complex(real * other.real - imag * other.imag, real * other.imag + imag * other.real);
}
Complex operator/(const Complex& other) const {
double denom = other.real * other.real + other.imag * other.imag;
return Complex((real * other.real + imag * other.imag) / denom, (imag * other.real - real * other.imag) / denom);
}
void print() const {
cout << real << " + " << imag << "i" << endl;
}
private:
double real;
double imag;
};
```
在上面的代码中,我们重载了加、减、乘、除四个运算符,使用 const 关键字修饰运算符函数的参数,表示运算符函数不会修改其参数的值。同时,我们还定义了一个 print 函数,用于输出复数的值。
接下来,我们可以编写一个简单的测试程序,来测试我们定义的 Complex 类和运算符重载函数是否正确。代码如下:
```cpp
int main() {
Complex a(1, 2);
Complex b(3, 4);
Complex c = a + b;
Complex d = a - b;
Complex e = a * b;
Complex f = a / b;
cout << "a = ";
a.print();
cout << "b = ";
b.print();
cout << "a + b = ";
c.print();
cout << "a - b = ";
d.print();
cout << "a * b = ";
e.print();
cout << "a / b = ";
f.print();
return 0;
}
```
运行上面的程序,我们可以得到如下输出:
```
a = 1 + 2i
b = 3 + 4i
a + b = 4 + 6i
a - b = -2 - 2i
a * b = -5 + 10i
a / b = 0.44 + 0.08i
```
可以看到,我们定义的 Complex 类和运算符重载函数运行正常,可以正确地进行复数的加、减、乘、除运算。
阅读全文