我最近看到一个面试在线测试问题,我需要帮助。这不是我正在面试的工作的问题,我只是对答案感到好奇。提前致谢。
#include <iostream>
class Foo
{
//...
};
void staff(Foo& f)
{
//..
std::out << f << endl; // output Foo object f
}
问题是:
需要定义哪些运算符才能正确显示对象?
std::ostream& operator <<(std::ostream&)
作为类的成员函数Foo
std::streambuf& operator << (std::ostream&, Foo const&)
作为一个独立的、重载的运算符。void << operator<<(std::ostream& , Foo const&)
作为一个独立的,重载的std::ostream& operator << (std::ostream&, Foo const&)
作为一个独立的,重载的void std::operator<<(std::ostream&)
作为类的成员函数Foo
请您参考如下方法:
std::ostream& operator << (std::ostream&, Foo const&);
你应该定义operator<<
带有上述签名。