我重载运算符 << 如下:
std::ostream& operator<<(std::ostream& o, const MyClass& myobj);
Run Code Online (Sandbox Code Playgroud)
现在,我想要有两个版本的operator<<,一个会显示我的对象的简短描述,另一个会显示较长的版本。
例如,MyClass 可以包含有关客户端的信息。在短版本中,我将仅显示姓名,在长版本中,我将显示更多详细信息,例如生日、地址等。
有没有办法在 C++ 中做到这一点?
我知道我可以有一个接收流的 MyClass 方法,但它会被这样调用:
myObj.DisplayShort(cout)
Run Code Online (Sandbox Code Playgroud)
或者
myObj.DisplayLong(cout)
Run Code Online (Sandbox Code Playgroud)
但我想保留类似于通常形式的语法:
cout << myObj << endl;
Run Code Online (Sandbox Code Playgroud)