0
如果我有一個抽象類,姑且稱之爲「脊椎動物」,它有一個場std::string name;
,它有一個純虛方法 virtual void print(std::ostream&) const noexcept = 0;
將在子類中重寫,並呼籲在operator<<
。操作<<在抽象類中,C++
我得到了多態如何工作,以及如何在繼承類中實現operator<<
。
我沒有得到什麼:
我不明白這一點:如何實現在抽象類的operator<<
,使用虛擬打印功能。爲什麼這段代碼不起作用?我的抽象類需要有operator<<
。
virtual void print(std::ostream&) const noexcept = 0;
std::ostream & operator<<(std::ostream & str, Member &obj)
{
return obj.print(str);
}
這是抽象類代碼。
'的operator <<'用於流輸出必須是獨立的,非成員函數。你一直說「我的班級有'operator <<'」或「implement'operator''在某個班級中」 - 你究竟是什麼意思?無論如何,一個非成員函數'std :: ostream&operator <<(std :: ostream&str,Vertebrate&obj){obj.print(str);返回str; }'應該適用於從'Vertebrate'派生的所有類 - 對於每個類你不需要單獨的類。 –