c/c++面試題(9)linux方向
1.簡述用虛函數實現的多態的原理:
編譯器發現一個類中有虛函數的時候,便會立即為此類生成虛函數表vtable.虛函數表的各
表項為指向對應虛函數的指針.編譯器還會在此類中隱含插入一個指針vptr(對vc編譯器來
說,它插在類的第一個位置上)指向虛函數表.調用此類的構造函數的時候,在類的構造函數
中,編譯器會隱含執行vptr和vtable的關聯代碼,將vptr指向對應的vtable,將類與此類的
vtable聯系起來.另外在調用類的構造函數時,指向基礎類的指針此時已經變成指向具體
的類的this指針,這樣依靠此this指針即可得到正確的vtable,如此才能真正的與函數體進行
連接,這就是動態聯編,實現多態的基本原理.
浙公網安備 33010602011771號