如何重载输出和输入操作符?

时间:2013-07-26 14:50:06

标签: c++ operator-overloading

我在稍后发现的另一篇文章中以一般化的方式介绍了这个主题:Operator overloading

但具体来说,这是一小段代码:

class wordchecklist
{
    string name,type;
    unsigned int stats;
};

我想要做的是重载输出操作符,以便以下代码工作

修改(请注意,它包含私有成员,所以我更喜欢通过创建某种成员函数来实现这一目标):

ofstream data(database.txt,ios::app);
data<<wordchecklist;
data.close();

以便我的database.txt文件包含:

mywordchecklistname mywordchecklisttype mywordcheckliststats

输入操作符也一样......

1 个答案:

答案 0 :(得分:3)

您必须定义非成员函数:

std::ofstream &operator <<(std::ofstream &stream, const wordchecklist &data)
{
     stream << data.name << " " << data.type << " " << data.stats << std::endl;
     return stream;
}

::operator >>执行相同操作。

ProTip:在标识符中使用CamelCapsunder_scores,以使您的类具有可读名称。