14.2. 输入和输出操作符重载

#include<iostream>

#include<string>

using namespace std;



class sales_item

{

	friend istream& operator>>(istream &,sales_item&);

	friend ostream& operator<<(ostream&,const sales_item&);

public:

	sales_item& operator+=(const sales_item&);



private:

	int a;

	string str;

};

sales_item operator+(const sales_item&,const sales_item&);

/*

我们不能将该操作符定义为类的成员,否则,左操作数将只能是该类类型的对象

相反,如果想要使用重载操作符为该类型提供 IO 操作,就必须将它们定义

为非成员函数。IO 操作符通常对非公用数据成员进行读写,因此,类通常将 IO 

操作符设为友元。

*/



//输出操作符的重载

ostream& operator<<(ostream& os,const sales_item& sales)

{

	os<<sales.str<<endl;

	return os;

}



//输入运算符的重载

/*与输出操作符类似,输入操作符的第一个形参是一个引用,指向它要读的流,

并且返回的也是对同一个流的引用。它的第二个形参是对要读入的对象的非 

const 引用,该形参必须为非 const,因为输入操作符的目的是将数据读到这个

对象中*/

istream& operator>>(istream& ism,sales_item& sales)

{

	ism>>sales.str;

	if(!ism)

	{sales.str=" ";}

	return ism;

}







int main()

{

	ostream& os;

	os.



}

  

你可能感兴趣的:(操作符)