第11章 類物件導向理念

2021-09-19 11:10:58 字數 2188 閱讀 8587

1,物件導向具體使用理念

2,原始碼

#include #include #include /*

1,基類: 通常在層次關係的根部有乙個基類

2,派生類:直接或間接從基類基礎而來,這些繼承得到的類稱為派生類

3,虛函式:對於某些函式,基類希望它的派生類各自定義適合自身的版本,此時基類就將這些函式宣告成虛函式,任何構

造函式之外的非靜態函式都可以是虛函式

4,protected:派生類可以有權訪問該成員,同時禁止其他使用者訪問,可以用proteced說明這樣的成員,派生類可以訪問

共有成員函式,禁止訪問私有成員函式

5,override:如果派生類在虛函式宣告時使用了override描述符,那麼該函式必須過載其基類中的同名函式,如果我們使

用override標記了某個函式,但該函 數並沒有覆蓋已存在的虛函式,此時編譯器將會報錯

6,派生類物件含有從基類繼承而來的成員,但是派生類並不能直接處時候這些成員,派生類也須使用基類的建構函式來初

始化它的基類部分

7,動態繫結:只有我們通過指標或引用呼叫虛函式時候才會發生

8,多型性:在基類的函式前加上virtual關鍵字,在派生類中重寫該函式,執行時將會根據物件的實際型別來呼叫相應的

函式,如果物件型別是派生類就呼叫派生類的函式;如果物件型別是基類,就呼叫基類的函式

<1>:用virtual關鍵字申明的函式叫做虛函式,虛函式可定時類的成員函式

<2>:存在虛函式的類都有乙個一維的虛函式表叫做虛表,類的兌現有乙個指向虛表開始的虛指標,虛表和類對應的,

虛表指標和物件對應的

<3>:多型性是乙個介面多種實現,是物件導向的核心,分為類的多型性和函式的多型性

<4>:多型用虛函式來實現,結合動態繫結

<5>:純虛函式是虛函式再加上=0

<6>:抽象類是指包括至少乙個純虛函式的類

<7>:純虛函式:virtual void fun() = 0;即抽象類必須在子類實現這個函式,即先有名稱,沒有內容,在派生類實現內容;

含有純虛函式的類是抽象基類

9,虛函式const修飾,虛函式的要求是:函式原型相同(函式返回值、函式名,引數列表、const修飾符),const修飾符

包括函式返回值的修飾、函式形參的修飾、函式本身的修飾,只要有一處const沒有對上、那麼就不是虛函式的過載,而

是發生了同名覆蓋的現象

10,基類通常都應該定義乙個虛析構函式,即使該函式不執行任何實際操作也是如此

11,繼承與靜態成員函式:如果基類定義了乙個靜態成員函式,則在整個繼承體系中只存在該成員函式唯一定義

12,當且僅當通過指標或引用呼叫虛函式時,才會在執行時解析該呼叫,也只有在這種情況下物件的動態型別才有可能與靜

態型別不同

13,派生類建構函式只初始化的它的直接基類

14,當我們使用容器存放繼承體系中的物件時,通常必須採用間接儲存的方式,不能把具有繼承關係的多種型別物件直接存

放在容器當中;當我們希望在容器中存放具有繼承關係的物件時,我們實際上存放的通常是基類的指標(更好的選擇是

智慧型指標)

*/using namespace std;

//類的宣告

class quote;

class bulk_quote;

//基類

class quote

std::string isbn() const

virtual double net_price(std::size_t n) const

virtual ~quote() = default;

private:

std::string bookno;

protected:

double price = 0.0;

};//派生類

class bulk_quote : public quote

double net_price(std::size_t) const override;

private:

std::size_t min_qty = 0;

double discount = 0.0;

};double bulk_quote::net_price(size_t cnt) const

else

}int main()

第13章 物件導向程式設計 11

13.12 類 例項和其他物件的內建函式 13.12.1 issubclass issubclass 布林函式判斷乙個類是否另乙個類的子類或子孫類。class sortedkeydict dict def keys self return sorted super sortedkeydict,sel...

11物件導向 類與物件

物件導向程式設計 object oriented programming簡寫oop 類和物件是物件導向程式設計的兩個核心概念 類是對一群具有相同特徵或者行為的事物的乙個統稱,是抽象的。類中定義了什麼屬性和方法,物件中就有什麼屬性和方法 class 類名 def 方法1 self,引數列表 pass ...

第10章 物件導向

1 物件導向設計的三個基本原則 封裝 繼承 多型 2 c 的空類預設產生哪些成員函式?預設建構函式 析構函式 預設拷貝建構函式 賦值函式 3 c 中的struct和class的唯一不同點 sruct裡的預設訪問控制是public,class裡的預設訪問控制是private 4 使用靜態成員變數在乙個...