區分介面繼承和實現繼承
類包含的成員函式種類
1.靜態函式
2.非靜態函式
2.1 普通函式(非虛) non-virtual
2.2 虛函式
2.2.1 純虛函式 pure-virtual
2.2.2 非純虛函式 impure-virtual
一、介面繼承
繼承類必須要實現宣告為pure-virtual的函式,意味每個繼承類的特異化實現
二、實現繼承
繼承類如有需要可以覆寫(override)基類的impure-virtual函式,當不覆寫時將使用基類提供的預設實現
三、普通非虛函式
繼承類不應宣告實現此類函式,否則該繼承類將隱藏基類的實現。此類函式的意義就是強制所有繼承類都使用基類的實現。
例子: 繪圖類結構中, shape作為抽象基類。
#pragma once#includeclass
shape
virtual
void draw() = 0
;
virtual
void error(const std::string&msg);
int objectid() const
;protected
:private:};
class rectangle : public
shape
void error(const std::string& msg)override
};class circle : public
shape
};
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同時繼承函式的介面與實現,但是又希望...
條款34 區分介面繼承和實現繼承
作為乙個 class 的設計者 1 有的時候你想要 derived classes 只繼承乙個 member function 的 inte ce declaration 宣告乙個 pure virtual function的目的是使 derived classes 繼承乙個函式 inte ce o...