Day 71 虛函式,執行時多型

2021-09-27 12:47:00 字數 816 閱讀 6037

liunx下如何將結構體中的成員儲存的更緊湊一些:

可以有兩種方式:

(1)將資料型別小的型別放在結構體的前面。

(2)使用#pragma pack(1)預處理命令將,儲存方式改為乙個位元組的儲存方式,這樣做雖然節省了空間,但效率卻有所降低。

過載運算子 << 時不能定義在類中,要在類外定義;

賦值運算子只能寫為類的成員函式過載。

delete 刪除空指標null(nullptr)時不會出現程式奔潰。

c++ 11中提供第七個預設移動建構函式, 還有第8個移動賦值過載函式。

異常處理,有throw 丟擲, 用try {} catch(const char * s){}; 接住

虛函式實現的包含性多型。只有函式同名同引數時才可以在基類中定義為虛函式,關鍵字virtual必須放在基類之前。

使用基類指標可以訪問到派生類改造的成員函式,是如何做到的: 使用的是虛表;虛表裡面存的是虛函式的指標陣列。

派生類將會先繼承基類虛表(虛函式的函式位址)的指標陣列,然後將繼承過來的虛表改造,最後新增新的虛函式指標。

//抽象類

//介面類 inte***ce

//1.靜態函式不能是虛函式

//2.全域性函式不能是虛函式

//3.內聯函式不能是虛函式

//4.建構函式不能是虛函式

//5.析構函式可以是虛函式

class hero

else if(2==n)

else if(3==n)

p->q();

}cout << "hello world!" << endl;

return 0;

虛函式 執行時多型的理解

形狀對外公開乙個函式來把自己繪製出來。這是合理的,形狀就應該能繪製出來,對吧?由於繼承的原因,多邊形和圓形也有了繪製自己這個函式。現在我們來討論在這三個類中的繪製自己的函式都應該怎麼實現。在形狀中嘛,什麼也不做就行了。在多邊形中嘛,只要把它所有的頂點首尾相連起來就行了。在圓形中嘛,依據它的圓心和它的...

RTTI 執行時型別檢查 虛函式

在c 層面主要體現在dynamic cast和typeid,vs中虛函式表的 1位置存放了指向type info的指標。對於存在虛函式的型別,typeid和dynamic cast都會去查詢type info rtti即執行時型別識別,用來識別動態物件的型別。即使我們僅僅有基類的指標和引用,可以識別...

Java編譯時多型和執行時多型

編譯時多型 主要是方法的過載,通過引數列表的不同來區分不同的方法。執行時多型 也叫作動態繫結,一般是指在執行期間 非編譯期間 判斷引用物件的實際型別,根據實際型別判斷並呼叫相應的屬性和方法。主要用於繼承父類和實現介面時,父類引用指向子類物件。例如 public class polymorphismt...