重载流插入 << 和流提取 >> 运算符,使其能够直接输出复数的类型的数据:

#include <iostream>
using namespace std;
class Complex
{
public:
Complex() //定义无参构造函数
{
real=0;
imag=0;
}
Complex(double r, double i) //定义带参构造函数重载
{
real=r;
imag=i;
}
Complex operator +(Complex &c2); //运算符 + 重载为成员函数
friend ostream& operator << (ostream &, Complex &); //运算符 << 重载为友元函数,类型为ostream输出引用类型
friend istream& operator >> (istream &, Complex &); //运算符 >> 重载为友元函数,类型为istream输入引用类型
private: //私有成员数据的定义
double real;
double imag;
};

//定义运算符 + 的重载成员函数
Complex Complex::operator +(Complex &c2)
{
return Complex(real+c2.real, imag+c2.imag);
}

//定义运算符 << 的重载成员函数 ,output就是输出cout
ostream& operator << (ostream &output, Complex &c)
{
output << "(" << c.real << "+" << c.imag << "i)" << endl;
return output;
}

//定义运算符 >> 的重载成员函数 ,input就是cin输入
istream& operator >> (istream &input, Complex &c)
{
cout << "请分别输入复数的实部和虚部:" << endl;
input >> c.real >> c.imag; //对数据的输入采集
return input;
}

int main()
{
//直接使用重载输出流
cout << "--------------直接使用重载输出流--------------" << endl;
Complex c1(2, 4), c2(6, 10), c3; //实例化三个对象,传入参数
c3= c1+c2; //复数相加
cout << c3; //输出复数相加的结果 ,这样可以直接输出一个对象,而不用去单独访问对象中的成员数据

//直接使用重载输入流
cout << "--------------直接使用重载输入流--------------" << endl;
Complex c4, c5; //实例化两个对象,调动无参构造函数
cin >> c4 >> c5; //使用cin调用函数重载运算符>>
cout << "c1=" << c4 << endl; //输出对象c1的值,即将对象以复数的形式输出
cout << "c2=" << c5 << endl;
return 0;
}

C++对输入流输出流运算符的重载【案例】_C++