條款34 區分介面繼承和實現繼承

2021-05-21 23:53:59 字數 591 閱讀 3314

作為乙個 class 的設計者

1、有的時候你想要 derived classes 只繼承乙個 member function 的 inte***ce (declaration):

宣告乙個 pure virtual function的目的是使 derived classes 繼承乙個函式 inte***ce only。

2、有的時候你想要 derived classes 既繼承 inte***ce也繼承 implementation,但你要允許它們替換他們繼承到的 implementation:

宣告乙個 ****** virtual function 的目的是讓 derived classes 繼承乙個函式 inte***ce as well as a default implementation。「你應該支援乙個 error function,但如果你不想自己寫,你可以求助 shape class 中的預設版本。」

問題**:若出現modelc型機不能用預設fly,卻忽略實現fly

修改方案:

3、還有的時候你想要 derived classes 繼承乙個函式的 inte***ce和 implementation,而不允許它們替換任何東西。

34區分介面繼承和實現繼承

宣告 pure virtual 函式的目的是為了讓derived class 只繼承函式介面,具體實現須在derived class 中完成 宣告impure virtual 函式的目的是為了讓 derived class 繼承該函式的介面和預設實現,通過呼叫可在此預設實現基礎上新增新的 宣告non...

34區分介面繼承和實現繼承

函式介面繼承與函式實現繼承,在public繼承之下,derived classes總是繼承base class的介面。作為class的設計者 1.有時我們希望derived classes只繼承成員函式的介面 宣告 2.有時我們會希望derived classes同時繼承函式的介面與實現,但是又希望...

C Item34 區分介面繼承和實現繼承

區分介面繼承和實現繼承 類包含的成員函式種類 1.靜態函式 2.非靜態函式 2.1 普通函式 非虛 non virtual 2.2 虛函式 2.2.1 純虛函式 pure virtual 2.2.2 非純虛函式 impure virtual 一 介面繼承 繼承類必須要實現宣告為pure virtua...