1. 程式人生 > >面試題17——簡述多型實現的原理

面試題17——簡述多型實現的原理

編譯器發現一個類中有虛擬函式,便會立即為此類生成虛擬函式表vtable。虛擬函式表的各表項為指向對應虛擬函式的指標。編譯器還會為此類中隱含插入一個指標vptr(對vc編譯器說,它插在類的第一位置上)指向虛擬函式表。呼叫此類的建構函式時,在類的建構函式中,編譯器會隱含執行vptr與vtable的關聯程式碼,將vptr指向相應的vtable,將類與此類的vtable聯絡起來。另外在呼叫類的建構函式時,指向基礎類的指標此時已經變成指向具體的類的this指標,這樣依靠此this指標即可得到正確的vtable,如此才能真正與函式體進行連線,這就是動態聯編,實現多型的基本原理。

虛擬函式是實現多型的基礎。