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

2022-03-12 07:17:21 字數 817 閱讀 6740

區分介面繼承和實現繼承

類包含的成員函式種類

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#include 

class

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...