定义复数类Complex,包含实部r(double类型)、虚部i(double类型)两个数据成员。 (1)定义含默认参数值的构造函数Complex(double real=0.0, double image=0.0),使用户能够在构造对象的同时为对象赋初值。 (2)以函数成员的方式对复数的加法“+”、减法“-”、乘法“*”三个二元运算符进行重载,以实现复数之间的加、减、乘功能。 (3)以友元函数的方式重载输出运算符“<<”,使得Complex类的对象能够显示其自身信息。
时间: 2024-02-18 18:59:47 浏览: 39
好的,以下是Complex类的定义和实现:
```cpp
#include <iostream>
class Complex {
public:
Complex(double real = 0.0, double imag = 0.0): r(real), i(imag) {}
Complex operator+(const Complex& rhs) const {
return Complex(r + rhs.r, i + rhs.i);
}
Complex operator-(const Complex& rhs) const {
return Complex(r - rhs.r, i - rhs.i);
}
Complex operator*(const Complex& rhs) const {
return Complex(r * rhs.r - i * rhs.i, r * rhs.i + i * rhs.r);
}
friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << c.r << (c.i >= 0.0 ? "+" : "-") << std::abs(c.i) << "i";
return os;
}
private:
double r, i;
};
```
我们定义了一个Complex类,包含一个含有默认参数值的构造函数,以及重载了加法、减法、乘法三个运算符。其中加减法都是通过重载运算符实现的,乘法使用了公式 $ (a+bi)\times(c+di) = (ac-bd) + (ad+bc)i $。
我们也使用了一个友元函数,重载了输出运算符“<<”,使得Complex类的对象能够显示其自身信息。
这个类的使用示例:
```cpp
int main() {
Complex a(1.0, 2.0), b(3.0, -4.0);
std::cout << "a = " << a << std::endl;
std::cout << "b = " << b << std::endl;
std::cout << "a + b = " << a + b << std::endl;
std::cout << "a - b = " << a - b << std::endl;
std::cout << "a * b = " << a * b << std::endl;
return 0;
}
```
输出结果:
```
a = 1+2i
b = 3-4i
a + b = 4-2i
a - b = -2+6i
a * b = 11-2i
```
阅读全文