多型知識點

2021-09-06 07:41:00 字數 3106 閱讀 4645

多型知識點總結如下:

<1> 含有純虛函式的類稱為抽象類

<2> 抽象類不可以實現例項化

<3> 繼承抽象類的函式如果沒有實現所有的純虛函式也為抽象類

<4> 純虛函式的實現格式:virtual void print() = 0;

<5> 繼承類在實現純虛函式時,可以略去關鍵字virtual,但一般建議必寫(便於維護)

<6> 乙個虛函式定義在類的內部,但它卻不是內聯函式

<7> 靜態成員函式不可以定義為虛函式

<8> 內聯函式不可以定義為虛函式

<9> 常函式可以定義為虛函式

<10> c++執行時多型是通過繼承和虛函式實現的

<11> 父類繼承子類後:不論是資料成員,還是函式成員,除建構函式與析構函式外全盤接收

<12> 同名覆蓋:宣告乙個和某父類成員同名的新成員,子類中的新成員就遮蔽了基類同名成員

<13> 派生類必須要重寫建構函式與析構函式

<14> 乙個基類可以直接派生出多個派生類

<15> 多重繼承:派生類可以由多個基類共同派生出來

<16> 公有派生是絕對主流

<17> 呼叫基類建構函式,按它們在派生類定義的先後順序,順序呼叫

<18> 呼叫成員物件的建構函式,按它們在類定義中宣告的先後順序,順序呼叫

<19> 如果基類定義了帶有形參表的建構函式時,派生類就應當定義建構函式

<20> 繼承的關鍵是子類繼承來乙個父類的隱藏物件

<21> 如果基類沒有定義建構函式,則派生類也可以不定義,全部採用系統預設建構函式

<22> 在派生類建構函式中,只要基類不是使用預設建構函式都要顯式給出基類名和參數列

<23> 解決菱形繼承的技術是採用虛基類繼承

<24> 派生類物件的建立順序:首先是虛基類的建構函式按它們宣告的順序構造;第二批是非虛基類的建構函式按它們宣告的順序呼叫;第三批是成員物件的建構函式;最後是派生類自己的建構函式被呼叫

<25> 派生類析構函式首先對新增一般成員析構,然後對新增物件成員析構,最後對基類成員析構

<26> 賦值相容規則:任何需要基類物件的地方都可以用公有派生類的物件來代替(切片現象)

<27> 派生類的物件可以賦值給基類的物件,實質是把派生類物件中從對應基類中繼承來的隱藏物件賦值給基類物件,反之不可

<28> 可以將乙個派生類的物件的位址賦給其基類的指標變數,但只能通過這個指標訪問派生類中由基類繼承來的隱藏物件,不能訪問派生類中的新成員,反之不可

<29> 派生類物件可以初始化基類的引用,但這個別名只能包含派生類物件中的由基類繼承來的那個隱藏物件

<30> 虛繼承只要在繼承時的父類名前加virtual關鍵字即可

class student : virtual public person ;

<31> 編譯時的多型性:通過函式的過載和運算子的過載來實現的

<32> virtual僅用於類定義中,如虛函式在類外定義,不可加virtual

<33> 當某乙個類的某乙個成員函式被定義為虛函式後,由該類派生出來的所有派生類中,該函式始終保持虛函式的特徵

<34> 重新定義虛函式必須要「三同」準則

<35> 同名覆蓋:派生類對乙個基類的一般成員函式的重寫

<36> 超載:在派生類中重新定義基類的虛函式

<37> 過載:派生類對乙個基類的一般成員函式引數有改動後的重寫

<38> 派生類採用繼承方法,成員物件是巢狀的概念

<39> 某些應用中,物件成員可以代替繼承中的基類隱藏物件

<40> 基類在派生類中只能繼承乙個(間接基類不在討論之中)不能同時安排兩個

<41> 利用多型性技術,可以呼叫同乙個函式名的函式,實現完全不同的功能

<42> 基類中返回基類指標,派生類中返回派生類指標是允許的,這是乙個例外

<43> 只有類的成員函式才能宣告為虛函式。這是因為虛函式僅適用於有繼承關係的類物件

<44> 靜態成員函式,是所有同一類物件共有,不受限於某個物件,不能作為虛函式

<45> 乙個類物件的靜態和動態型別是相同的,實現動態多型性條件:必須使用基類型別的指標變數或引用,使基類指標指向不同派生類的物件,並通過該指標指向虛函式。或者用基類型別的引用呼叫派生類的中與基類同名的虛函式。才能實現動態的多型性。

<46> 內聯函式每個物件乙個拷貝,無對映關係,不能作為虛函式

<47> 析構函式可定義為虛函式,建構函式不能定義虛函式,因為在呼叫建構函式時物件還沒有完成例項化

<48> 在基類中及其派生類中都動態分配的記憶體空間時,必須把析構函式定義為虛函式,實現撤消物件時的多型性

<49> 為了實現多型性,每乙個派生類中均要儲存相應虛函式的入口位址表,函式的呼叫機制也是間接實現

<50> 如果定義放在類外,virtual只能加在函式宣告前面,不能(再)加在函式定義前面

<51> 根據賦值相容規則可以用基類的指標指向派生類物件,如果由該指標撤銷派生類物件,則必須將析構函式說明為虛函式,實現多型性,自動呼叫派生類析構函式

<52> 純虛函式不能呼叫

<53> 定義純虛函式時,不能定義純虛函式的實現部分。即使是函式體為空也不可以

<54> 「=0」表明程式設計師將不定義該函式,函式宣告是為派生類保留乙個位置

<55> 「=0」本質上是將指向函式體的指標定為null

<56> 抽象類中的析構函式也是虛函式,這一點非常重要

<57> 要特別仔細揣摩堆記憶體的分配與釋放,刪除乙個結點時系統自動呼叫結點類析構函式釋放結點占用的動態記憶體,而結點釋放時系統自動呼叫資料域類析構函式釋放資料類占用的動態記憶體,

<58> 如果使用物件名和點成員選擇運算子「.」引用特定的乙個物件來呼叫虛函式,則被呼叫的虛函式是在編譯時確定的(稱為靜態聯編)

<59> 如果使用基類指標或引用指明派生類物件並使用該指標呼叫虛函式(成員選擇符用箭頭號「->」),則程式動態地(執行時)選擇該派生類的虛函式,稱為動態聯編

<60> 聯編是指電腦程式自身彼此關聯的過程,是把乙個識別符號名和乙個儲存位址聯絡在一起的過程,也就是把一條訊息和乙個物件的操作相結合的過程

<61> 類中只要有且僅有乙個虛函式(包括純虛函式),那麼類的sizeof值多四個位元組

<62> c++編譯器編譯含有乙個或幾個虛函式的類及其派生類時,對該類建立虛函式表(多的四個位元組即為虛函式表指標)。

good good study, day day up.

順序 選擇 迴圈 總結

多型知識點

1.乙個物件擁有多種形態,稱為物件的多型性,如劉星既有學生形態,也有人類形態。2.中體現多型性 子類被當作父類使用 格式為 fu aa new zi 父類名稱 物件名 new 子類名稱 介面名稱 物件名 new 實現類名稱 3.fu bb new zi 當直接通過物件名稱呼叫方法時,看等號右邊是誰,...

java多型知識點總結

多型 一種事物有多種表現形式。物件導向的最後乙個特徵,繼承和封裝都是為多型打基礎!生活中的多型 打招呼 中國人 你好 英國人 hello 日本人 拷逆七娃 南韓人 阿娘哈賽you 泰國人 薩瓦迪卡 1 方法的多型性 方法的重寫和過載 2 物件的多型性 物件的轉型上!person p new stud...

C 多型等知識點

分清虛函式和純虛函式的區別 1 虛函式是函式前加關鍵字virtual,一般定義格式為 virtual 型別 函式名 參數列 函式體 2 純虛函式的生命格式為 virtual 型別 函式名 參數列 0 即沒有函式體。3 帶有純虛函式的類為抽象類 例 class 類名 virtual 型別 函式名 參數...