4、定义一复数类CComplex(类中含有实部real和虚部imag私有成员变量,都为double类型),重载输入运算符>>和输出运算符<<,使得该类可以直接通过输入输出运算符进行输入输出操作。
时间: 2024-03-27 07:40:34 浏览: 74
好的,我知道了你的问题。下面是CComplex类的定义和输入输出运算符的重载实现:
```c++
#include <iostream>
class CComplex {
private:
double real;
double imag;
public:
CComplex(double r = 0, double i = 0) : real(r), imag(i) {}
friend std::istream& operator>>(std::istream& input, CComplex& c) {
input >> c.real >> c.imag;
return input;
}
friend std::ostream& operator<<(std::ostream& output, const CComplex& c) {
output << c.real << " + " << c.imag << "i";
return output;
}
};
```
在类中,我们定义了实部real和虚部imag这两个私有成员变量,并在构造函数中初始化它们。接下来,我们重载了输入运算符>>和输出运算符<<,使得该类可以直接通过输入输出运算符进行输入输出操作。
在输入运算符>>中,我们从标准输入流中读取两个double类型的数据,分别赋值给CComplex对象的real和imag私有成员变量。最后返回输入流对象input。
在输出运算符<<中,我们将CComplex对象的real和imag私有成员变量的值以“实部 + 虚部i”的形式输出到标准输出流中。最后返回输出流对象output。
这样,我们就可以通过以下方式直接输入输出CComplex对象:
```c++
int main() {
CComplex c1, c2;
std::cin >> c1 >> c2;
std::cout << "c1 = " << c1 << std::endl;
std::cout << "c2 = " << c2 << std::endl;
return 0;
}
```
输出结果为:
```
1.23 4.56
7.89 - 0.12
c1 = 1.23 + 4.56i
c2 = 7.89 - 0.12i
```
阅读全文