牛客網 多型經典選擇題

2021-09-29 18:03:08 字數 949 閱讀 8365

接下來我們需要理解題中p–>test()所執行的過程:

所以本題選擇b:b->1

要點

重點:c++多型的實現方式是虛函式表和虛表指標。

其中,c++編譯器為每個類內含有virtual函式的類生成乙個虛函式表,基類生成基類的虛函式表,虛函式表中包含類內所有虛函式的函式指標,即函式指標陣列。

c++呼叫虛函式時通過虛函式指標來間接呼叫。動態繫結有點類似於函式指標,當函式指標賦予不同值時就呼叫不同的函式。虛函式指標則是當賦予不同值時呼叫不同的函式組。

c++編譯器為每個含virtual的類物件新增乙個虛函式表指標,在呼叫物件的建構函式的時候初始化該虛函式表指標。在構造子類的時候需要先構造基類,所以在初始化虛函式表的指標時先用基類的虛函式表位址再用子類的虛函式表位址初始化該虛函式指標。

在本題中,在構造基類的時候,虛表指標是指向基類的虛函式表,所以呼叫的就基類的func();

構造子類的時候,虛表指標則指向了子類的虛函式表,呼叫的自然就是子類的func()。

本題思路如下:

思路如圖

牛客網(選擇題)

1.資料庫系統的體系結構是 兩級模式結構和一級映象 模式結構和一級映象 模式結構和兩級映象 模式結構和 映象 解析 概念模式 conceptual schema 是資料庫中全部資料的整體邏輯結構的描述。外模式 external schema 是使用者與資料庫系統的介面,是使用者用到的那部分資料的描述...

牛客網選擇題

2.下列哪種方式不能使程序進入就緒狀態 d a cpu排程給優先順序更高的執行緒 b 阻塞的執行緒獲得資源或者訊號 c 在時間片輪轉的情況下,如果時間片到了 d 獲得spinlock未果 程序三個狀態 執行 就緒 阻塞 等待。高優先順序的搶占cpu,使得原來處於執行狀態的程序轉變為就緒狀態。阻塞的程...

牛客網選擇題 資料結構

1 字串www.qq.com所有非空子串 兩個子串如果內容相同則只算乙個 個數是 1024 1018 5550 正確答案 d 解析 初始想法是組合問題,想錯了。字串概念理解錯誤。比如,abc的子串 a b c ab bc abc和乙個空子串 共 3 2 1 1 個 兩個字串 ab,bc,沒有ac.串...