重载运算符<<在谷歌c ++风格

EKP*_*EKP 8 c++

我尝试为我的类重载operator <<,以便在我执行std :: cout << obj时打印成员;

我知道这样做的方法是

std::ostream& operator<<(std::ostream& os, const T& obj)
{
  // write obj to stream

  return os;
}
Run Code Online (Sandbox Code Playgroud)

运算符重载的基本规则和习惯用法是什么?

但是,我尝试使我的代码符合Google C++风格指南 https://google.github.io/styleguide/cppguide.html#Reference_Arguments

它表示不允许传递没有const的引用,除非按惯例需要它,例如swap().这个重载运算符<<与swap()在同一类别中吗?或者有办法做某事

std::ostream& operator<<(std::ostream* os, const T& obj)
                                     ^
Run Code Online (Sandbox Code Playgroud)

?或者不以非const引用作为输入的东西.

如果是这样,请教我如何做到这一点.谢谢.

eer*_*ika 7

它表示不允许传递没有const的引用,除非按惯例需要它

好吧,流通常作为非const引用传递给流插入和提取操作符,因此看起来该规则允许您例外.因此,尽管接受非const引用参数,但定义建议的重载应该符合规则.

也就是说,我不是谷歌认为会议的权威.如果你在谷歌工作,你应该知道要问谁; 如果你不这样做,你就不需要对他们的风格感到压力.