我尝试为班级重载operator <<,以便在执行此操作时打印成员 std :: cout << obj;
我知道这样做的方法是
std::ostream& operator<<(std::ostream& os, const T& obj)
{
// write obj to stream
return os;
}
What are the basic rules and idioms for operator overloading?
但是,我尝试使我的代码符合Google C ++样式指南 https://google.github.io/styleguide/cppguide.html#Reference_Arguments
它表示不允许传递不带const的引用,除非约定(例如swap())需要它。这个重载运算符<<与swap()属于同一类别吗?或者有办法做类似的事情
std::ostream& operator<<(std::ostream* os, const T& obj)
^
?或不使用非常量引用作为输入的内容。
如果是,请教我该怎么做。谢谢。
答案 0 :(得分:7)
它说不允许传递没有const的引用,除非约定需要这种情况
好吧,该流通常以非常量引用的形式传递到流插入和提取运算符中,因此该规则似乎为您提供了例外。因此,尽管接受了非常量引用参数,但定义建议的重载仍应符合规则。
也就是说,我不是Google视为惯例的权威。如果您为Google工作,则应该知道问谁;如果您不这样做,那么您就不必对他们的风格感到压力。