星期四, 7月 02, 2009

為什麼 C++ 的 destructor 是 virtual function ?

Q: 為什麼 C++ 的 destructor 是 virtual function ?

A: 因為 C++ 類別衍生一個 object(instance) 時,member functions 都是在編譯
階段就固定了,在 member functions 前宣告 virtual 是表示此 function 是在
run-time 時才動態產生。

因此,如果一個物件衍生自原型類別,而解構式不宣告為 virtual,則所有衍生
的物件都只有一份解構式,如果其中一個物件解構,會影響到所有衍生自同一個
類別的物件,會產生無法預期的狀況。

所以所有的解構式都必須是動態產生的才不會有問題。

沒有留言: