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

2023-05-16

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

#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;
}

1-1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++对输入流输出流运算符的重载【案例】 的相关文章

随机推荐