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

1 c++

鉴于如下课程:

class Person
{
private:
    char *name;

public:
    Person()
    {
        name = new char[20];
    }
    ~Person()
    {
        delete [] name;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想打印以从这个实例打印名称,使用如下语句:

cout << myPerson << endl;
Run Code Online (Sandbox Code Playgroud)

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

jbr*_*ric 12

在课堂上添加:

friend std::ostream& operator<< (std::ostream& out, const Person& P);
Run Code Online (Sandbox Code Playgroud)

然后定义运算符<<这样的东西:

std::ostream& operator<< (std::ostream& out, const Person& P) {
    out << P.name;
    return out;
}
Run Code Online (Sandbox Code Playgroud)

  • 其实我确定这一点. (3认同)
  • 流操作员声明朋友是一种非常常见的模式,也是一种很好的模式.通过get/set访问器公开私有成员仅用于流式传输是不好的,因为它向所有人公开了所述访问者.朋友流媒体运营商至少限制对流的读取和写入的清晰上下文的访问. (3认同)
  • 我不确定ostream也可以是const.我可能错了. (2认同)