[英]abstract class overloading ostream operator
我有一個基本的抽象類Base。
class Base
{
protected:
string m_Name;
public:
virtual string Name() { return m_Name; }
virtual string Type() = 0;
virtual bool isEqual(Base* rhs) = 0 ;
//virtual ostream& operator<< (ostream& out) const;
};
我想重載operator <<
以顯示從Base
繼承的對象。 我不能使用void print()
函數,因為這些繼承自Base
對象還具有某些只能由operator <<
顯示的對象。
如何重載operator <<
?
一種常見的模式是提供一種虛擬print
方法,並在ostream&<<
運算符中使用它:
class Base
{
public:
void print(std::ostream& o) const { /* do your stuff */ }
virtual ~Base() {}
};
std::ostream& operator<<(std::ostream& o, const Base& b)
{
b.print(o);
return o;
}
這個想法是每個派生類型根據其需要實現print(ostream&)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.