你什么时候为一个类定义ostream运算符<<?

kal*_*kal 2 c++

问题可能是主观的,所以语法是

std::ostream& operator << (std::ostream & o, const SomeClass &a) {
    return o << a.accessor().. ; 
}
Run Code Online (Sandbox Code Playgroud)

你通常什么时候为你编写的类定义它,什么时候避免为你的类编写这个友元函数.

Mar*_*ork 8

如果我想要流一个类,我通常写这个:

std::ostream& operator << (std::ostream& o, const SomeClass& a)
{
    a.print(o);
    return o; 
}
Run Code Online (Sandbox Code Playgroud)

然后在SomeClass上打印一个const方法,该方法知道如何将类序列化为流.