用C++设计complex类:其数据成员为real 和 imag ,其成员函数为带两个参数的构造 函数、数据显示函数。其友元函数为重载的+ ,- ,* ,/ 。
时间: 2024-03-25 08:38:40 浏览: 59
C++运算符重载 成员函数与友元函数详解
5星 · 资源好评率100%
好的,下面是用 C++ 设计 complex 类的代码实现:
```cpp
class complex {
private:
double real, imag;
public:
complex(double r = 0, double i = 0) : real(r), imag(i) {}
friend complex operator+(const complex& c1, const complex& c2) { return complex(c1.real + c2.real, c1.imag + c2.imag); }
friend complex operator-(const complex& c1, const complex& c2) { return complex(c1.real - c2.real, c1.imag - c2.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); }
friend complex operator/(const complex& c1, const complex& c2) {
double denominator = c2.real * c2.real + c2.imag * c2.imag;
return complex((c1.real * c2.real + c1.imag * c2.imag) / denominator, (c1.imag * c2.real - c1.real * c2.imag) / denominator);
}
void display() { cout << "(" << real << "," << imag << ")" << endl; }
};
```
在这个类中,我们定义了两个私有数据成员 `real` 和 `imag` 用来表示复数的实部和虚部,以及一个带两个参数的构造函数用来初始化这两个数据成员。我们还定义了四个友元函数 `operator+()` 、 `operator-()` 、 `operator*()` 和 `operator/()` 分别用来重载加、减、乘、除运算符,实现复数的加减乘除操作。在 `operator/()` 函数中,我们需要注意分母不能为 0 的情况。最后,我们还定义了一个公有成员函数 `display()` 用来打印复数值。
阅读全文