如何定义特定于类的<< C ++中的运算符

时间:2009-05-25 18:17:51

标签: c++

给出如下课程:

class Person
{
private:
    char *name;

public:
    Person()
    {
        name = new char[20];
    }
    ~Person()
    {
        delete [] name;
    }
}

我想打印以使用如下语句打印此实例的名称:

cout << myPerson << endl;

如何为此类定义<<输出运算符?

2 个答案:

答案 0 :(得分:12)

在课堂上添加:

friend std::ostream& operator<< (std::ostream& out, const Person& P);

然后定义运算符&lt;&lt;像这样的东西:

std::ostream& operator<< (std::ostream& out, const Person& P) {
    out << P.name;
    return out;
}

答案 1 :(得分:3)

定义一个以ostream为参数的成员函数print()。然后让重载运算符&lt;&lt;叫这个成员函数。这样你就可以避免使用朋友了。例如:

void YourClass::print(ostream& out) const
{
    //implement printing ...
}
ostream& operator<<(ostream& out, const YourClass& m)
{
    m.print(out);
    return out;
}