簡體   English   中英

抽象類重載ostream運算符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM