構造函數與析構函數的比較表:
名稱 |
功能 |
是否可重載 |
是否可繼承 |
是否可定義爲虛函數 |
是否可帶參數 |
是否有返回值 |
構造函數 |
初始化、自動調用 |
可重載 |
不可繼承 |
不可定義爲虛函數 |
可帶參數 |
無返回值 |
析構函數 |
用於清除(實例、內存回收)、自動調用 |
不可重載(當定義爲虛函數時,相當於隱性繼承) |
不可繼承 |
可定義爲虛函數 |
不可帶參數 |
無返回值 |
注:重載指函數名相同、參數列表(參數個數或數據類型)不同,與返回值無關。
繼承指基類函數與派生類(子類)函數完全相同。
附:內聯函數、構造函數和靜態成員函數不可定義爲虛函數。
爲什麼靜態成員函數不可定義爲虛函數?(反證法)
答:如果定義爲虛函數,那麼它就是動態綁定的,也就是在派生類中可以被覆蓋的,這與靜態成員函數的定義本身就是相矛盾的。