C++的構造函數為何不能為虛函數


1. 存儲空間角度:虛函數對應一個vtable,vtable存儲於對象的內存空間

若構造函數是虛的,則需要通過 vtable來調用,若對象還未實例化,即內存空間還沒有,無法找到vtable

2. 使用角度:虛函數主要用於在信息不全的情況下,能使重載的函數得到對應的調用。

構造函數本身就是要初始化實例,那使用虛函數就沒有實際意義

3. 從實際含義上看,在調用構造函數時還不能確定對象的真實類型(因為子類會調父類的構造函數);而且構造函數的作用是提供初始化,在對象生命期只執行一次,不是對象的動態行為,也沒有太大的必要成為虛函數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM