2012-03-11 20 views
1

所以我有一個Base類:我該如何在基本抽象類中調用重載操作符?

class Base 
{ 
public: 
    std::ostream& operator << (std::ostream & out, const Base & base); 
} 

而且我已經定義了運營商應該做的:

ostream& operator << (std::ostream & out, const Base & base) 
{ 
    return out << "output"; 
} 

如果我有一個Derived類,它擴展Base,我想Derived做同樣的當它的插入操作符被調用時,它的作用是Base,那麼執行此操作的最佳方法是什麼?我最好的意思是不重用代碼的最佳方式。

+0

您是否嘗試過'虛擬'方法,其中重寫只有在派生的行爲與基本行爲不同時纔會執行? – moshbear 2012-03-11 04:36:55

+3

您的運營商聲明無效。 – Xeo 2012-03-11 04:36:58

+0

不管怎麼樣,考慮到你通過引用傳遞'Base'(所以它可能是一個'Derived'並且仍然與虛擬東西一起工作)......一旦你把它從課堂中拿出來了,反正這不會發生嗎? (類中的'<<'操作符會讓你說'aBase << stuff;',但與ostreams無關。) – cHao 2012-03-11 04:36:58

回答

0

如果你想在派生類中使用一個基類方法,限定呼叫:

void Derived::func() 
{ 
    //whatever else you want to do first 
    return Base::func(); 
} 

除非方法private您可以訪問它,因爲Derived是一個Base