虛函式有關面試題

2022-08-25 16:24:26 字數 470 閱讀 7822

class

a

virtual

void p()

virtual ~a()

};class b:public

a

void p()

~b()

};int main(int, char**)

這段程式的輸出:abba

題目想構造乙個b類的物件,b繼承自a,所示首先構造a,a中構造函式呼叫p,雖然p是虛函式,按理來說應該動態繫結,但是此時b並沒有被構造,所以只能呼叫自己的p函式(輸出a),接下來構造b,呼叫b的p函式(輸出b),接著析構從派生類到基類,首先析構b,呼叫b的p函式(輸出b),接著呼叫a的析構函式,按理來說應該動態繫結,但是此時b已經被析構,所以只能呼叫自己的p函式(輸出a)。

解釋就是上面的,但是c++不推薦在構造/析構函式中呼叫虛函式進行動態繫結,詳情請看effective c++。

虛函式面試題

classa classb int tmain intargc,tchar argv 情況a 不是虛函式 輸出hello world,程式執行正常 情況b 有虛函式 程式直接crash 原因是 不是虛函式的情況,this指標當成第乙個引數傳入函式 一般是通過ecx暫存器 主要裡面沒有使用這個this...

面試題 虛函式和純虛函式

虛函式 c 中的虛函式的作用主要是實現了多型的機制。關於多型,簡而言之就是用父型別的指標指向其子類的例項,然後通過父類的指標呼叫實際子類的成員函式。這種技術可以讓父類的指標有 多種形態 這是一種泛型技術。如果呼叫非虛函式,則無論實際物件是什麼型別,都執行基類型別所定義的函式。非虛函式總是在編譯時根據...

C 面試題 多型,虛函式,純虛函式

多型 是對於不同物件接收相同訊息時產生不同的動作。c 的多型性具體體現在執行和編譯兩個方面 在程式執行時的多型性通過繼承和虛函式來體現 在程式編譯時多型性體現在函式和運算子的過載上 開課吧廣場c 面試 虛函式 在基類中冠以關鍵字 virtual 的成員函式。它提供了一種介面介面。允許在派生類中對基類...