编程论坛
注册
登录
编程论坛
→
C++教室
求教各位大侠如何如何重载运算符<<和>>!!
a632034079
发布于 2010-01-15 10:45, 1096 次点击
“<<”和“>>”怎么重载啊………………
实在是搞的糊涂了,自己编的代码,错误一大片………………希望各位大大们,给个代码让我参考参考
2 回复
#2
无诲今生
2010-01-15 13:26
ostream& operator<<(ostream& os,const List<Date>& rl)//重载<<运算符
{
Date temp;//定义结构体变量
for(int i=0;i<rl.size();i++)//遍历链表
{
rl.retrieve(i,temp);//复制数据
os<<temp.name<<'\n'<<temp.count<<'\n';//把数据定向到输出流
}
return os;//反回输出流对像
}
istream& operator>>(istream& is,List<Date>& rl)//重载<<运算符
{
Date rec;//定义结构体变量
string name;//定定义暂时字符串变量
while (true)
{
getline(is,name);//从输入流中获取数据,并存在name变量中
if(name=="")//当输入流为空时,退出循环
break;
rec.name=name;//把获取的数赋给结构体变量成员
getline(is,name);//再从输入流中获取数据,并存在name变量中
rec.count=atof(name.c_str()); //把字符串转换成浮点型
rl.insert(rl.size(),rec);//把rec插入链表中
}
return is;//反回输入流对象
}
这是对链表的读入文件和从文件的内容读入链表的例子
#3
mfkblue
2010-01-15 14:48
#include <iostream.h>
#include <string.h>
class person
{
public:
friend istream& operator>>(istream& instr,person& thing);
friend ostream& operator<<(ostream& outstr,person& thing);
protected:
char name[10];
int number;
};
istream& operator>>(istream& instr,person& thing)
{
instr>>thing.name>>thing.number;
return instr;
}
ostream& operator<<(ostream& outstr,person& thing)
{
outstr<<thing.name<<" "<<thing.number<<endl;
return outstr;
}
void main()
{
person A;
cin>>A;
cout<<A;
}
不用注解了吧 ,简单明了
1