注册 登录
编程论坛 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
mfkblue2010-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