c++重载输入输出运算符
时间: 2023-07-05 21:15:31 浏览: 47
在C++中,可以通过重载输入输出运算符来实现自定义类型的输入输出。以下是一个示例:
```cpp
#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 ostream& operator<<(ostream& os, const Complex& c) {
os << c.real << "+" << c.imag << "i";
return os;
}
friend istream& operator>>(istream& is, Complex& c) {
is >> c.real >> c.imag;
return is;
}
};
int main() {
Complex c1(1, 2);
Complex c2;
cout << "Enter a complex number: ";
cin >> c2;
cout << "The first complex number is: " << c1 << endl;
cout << "The second complex number is: " << c2 << endl;
return 0;
}
```
在上面的示例中,我们定义了一个名为`Complex`的类,它包含实部和虚部两个私有成员变量,并且在类定义中声明了两个友元函数`operator<<`和`operator>>`,分别用于重载输出和输入运算符。在`operator<<`中,我们使用`ostream`类型的输出流对象`os`和`const Complex&`类型的常量引用参数`c`,并重载`<<`运算符来输出复数的实部和虚部。在`operator>>`中,我们使用`istream`类型的输入流对象`is`和`Complex&`类型的非常量引用参数`c`,并重载`>>`运算符来读取复数的实部和虚部。在`main`函数中,我们创建了两个`Complex`对象,其中一个是给定的常量值,另一个从用户输入中读取。最后,我们使用输出运算符`<<`来输出这两个复数对象。