除了基础类之外一般都没有流的操作符直接应用(输入输出流如>>,<<)
重载输出流模式
ostream& operator << (ostream &out,Item &it);
但是事实上流是无法访问class本身的类型的,需要申明为友元,否则会出现下列情况。
error C2804: binary 'operator >>' has too many parameters
error C2333: '>>' : error in function declaration; skipping function body
error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'class Item' (or there is no accepta
因此有以下事例:
#include<iostream>
#include<istream>
#include<ostream>
using namespace std;
class Item{
public:
int num;
int weight;
int sum;
public:
friend istream& operator >>(istream& in,Item& it)
{
in>>it.num>>it.weight;
it.sum = it.num*it.weight;
return in;
}
friend ostream& operator <<(ostream& out,const Item& it){
out<<"num: "<<it.num<<" weight: "<<it.weight<<" sum : "<<it.sum<<endl;
return out;
}
};
int main(){
Item it;
cin>>it;
cout<<it;
return 0;
}