classa
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 的成員函式。它提供了一種介面介面。允許在派生類中對基類...