當前位置:
首頁 >
2020-12-18(何种情况下编译器会提供默认构造函数)
發布時間:2025/3/21
45
豆豆
生活随笔
收集整理的這篇文章主要介紹了
2020-12-18(何种情况下编译器会提供默认构造函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
當問到大家什么時候會提供默認構造函數時,有的人會不會一下子就想到當我們沒有定義構造函數的時候,它就會提供默認的構造函數,但我們想想一個問題,假如沒有意義的情況下提供了默認構造函數,那是不是把編譯器搞得像一個傻子一樣?其實呀,編譯器不傻。
所以總結如下:
下面兩種情況下,編譯器才會提供默認的構造函數:
a.本類.本類中定義的成員對象或者父類中有虛函數存在
解釋:由于需要初始化虛表,且這個工作理應在構造函數隱式完成,因此在沒有定義構造函數的情況下,編譯器會添加默認的構造函數用于隱式完成虛表的創建工作
b.父類或本類中定義的成員對象帶有構造函數
解釋:在對象被定義時,由于對象本身為派生類,因此構造順序實現構造父類再構造自身。當父類中帶有構造函數時,將會調用父類的構造函數,而這個調用過程需要在構造函數中完成,因此編譯器添加了默認的構造函數來完成這個調用過程。成員對象帶有構造函數的情況與此相同
在沒有定義構造函數的情況下,當類中沒有虛函數存在時,父類和成員對象也沒有定義構造函數時,提供默認構造函數已沒有任何意義,只會降低程序的執行效率。
總結
以上是生活随笔為你收集整理的2020-12-18(何种情况下编译器会提供默认构造函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2020-12-16(虚析构函数,神逻辑
- 下一篇: 定义派生类和继承类(从汇编分析)