中國大學MOOC 程式設計與演算法(三)筆記 多型

2021-10-18 10:18:34 字數 2477 閱讀 7648

在類的定義中,前面有 virtual 關鍵字的成員函式就是虛函式。

class

base

;int base::

get(

)virtual 關鍵字只用在類定義裡的函式宣告中,寫函式體時不用

一、

1、派生類的指標可以賦給基類指標。

2、通過基類指標呼叫基類和派生類中的同名虛函式時:

(1)若該指標指向乙個基類的物件,那麼被呼叫是基類的虛函式;

(2)若該指標指向乙個派生類的物件,那麼被呼叫的是派生類的虛函式。

這種機制就叫做「多型」。

class

cbase};

class

cderived

:public cbase };

intmain()

二、

1、派生類的物件可以賦給基類引用

2、通過基類引用呼叫基類和派生類中的同名虛函式時:

(1)若該引用引用的是乙個基類的物件,那麼被呼叫是基類的虛函式;

(2)若該引用引用的是乙個派生類的物件,那麼被呼叫的是派生類的虛函式。

這種機制也叫做「多型」。

classa}

;classb:

public a };

classd:

public a };

classe:

public b };

intmain()

多型的作用:

在物件導向的程式設計中使用多型,能夠增強程式的可擴充性,即程式需要修改或增加功能的時候,需要改動和增加的**較少。

class

base

/* void fun1()

this是基類指標,fun2是虛函式,所以是多型

*/virtual

void

fun2()

};class

derived

:public base };

intmain()

// pbase呼叫函式後,this指標指向派生類所以呼叫派生類的fun2()函式

輸出: derived:

fun2

()

在非建構函式,非析構函式的成員函式中呼叫虛函式,是多型!!!

class

myclass

;virtual

void

bye()}

;class

son:

public myclass

;son()

;~son();

};class

grandson

:public son

;void

bye(

)grandson()

;~grandson()

;};int

main()

/*程式結束時,物件消亡,先執行grandson的析構函式,再執行son的析構函式,

應呼叫son的bye(),但其沒有bye()函式,

但它從基類myclass繼承了乙個bye()函式,因此呼叫myclass的bye()函式

*/輸出:

hello from son

constructing grandson

hello from grandson

destructing grandson

bye from myclass

class

base};

class

derived

:public base };

derived d;

base * pbase =

& d;

pbase -

>

fun2()

;// 編譯出錯

通過基類的指標刪除派生類物件時,通常情況下只呼叫基類的析構函式

一般來說,乙個類如果定義了虛函式,則應該將析構函式也定義成虛函式。或者,乙個類打算作為基類使用,也應該將析構函式定義成虛函式。

純虛函式: 沒有函式體的虛函式

classa}

;

包含純虛函式的類叫抽象類

aa;

//錯,a是抽象類,不能建立物件a*

pa;//

ok,可以定義抽象類的指標和引用pa=

newa;/

/錯誤,a

是抽象類,不能建立物件

classa/*

a( )

*/};

classb:

public a};

intmain()

輸出:b:f(

)

中國大學MOOC 學習筆記(三)

在學習了嵩天老師的 python網路爬蟲與資訊提取課程 之後,我自己嘗試按照老師的步驟做了乙個小demo。url 如下 import requests from bs4 import beautifulsoup 獲得response物件 defgeturltext url r requests.ge...

畢博與中國大學mooc對比

本組選擇的測試產品a為畢博平台,產品b為中國大學慕課。專案進度表如下 我們小組劃分的功能模組如下 討論版的使用 提交作業與檢視作業 通知與搜尋 我負責的模組為討論版的使用 a.測試用例的設計思路 測試用例選擇的設計思路如下表的關鍵字列所示 請點這裡開啟匯出的測試用例 b.執行介面截圖 畢博對字型的測...

中國大學MOOC 學習筆記(一)

注 本文僅是個人的學習筆記,內容 於中國大學mooc python網路爬蟲與資訊提取 課程 一 京東商品頁面爬取 import requests url try r requests.get url r.raise for status 檢查訪問資訊的狀態碼,200表示正確 將編碼改為可以顯示的編碼...