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 使用靜態成員變數在乙個...