我最近看到一个面试在线测试问题,我需要帮助。这不是我正在面试的工作的问题,我只是对答案感到好奇。提前致谢。
#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<<
带有上述签名。
关于面试在线测试中的c++运算符重载问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5294371/