一、繼承中的構造函數
根據構造函數的執行流程我們知道:
派生類定義時,先執行基類的構造函數,再執行派生類的構造函數
拷貝構造函數與上面是相同的原理
二、繼承中的析構函數
根據析構函數的執行流程我們知道:
派生類釋放時,先執行派生類的析構函數,再執行基類的析構函數
二、繼承中被刪除的函數的語法
基類或派生類可以將其構造函數或者拷貝控制成員定義為刪除的。此外,某些定義基類的方式也可能導致有的派生類成員成為被刪除的函數。規則如下:
如果基類中的默認構造函數、拷貝構造函數、拷貝賦值運算符、或析構函數是被刪除的或者是不可訪問的,則派生類中對應的成員將是刪除的,原因是編譯器不能使用基類成員來執行派生類對象中屬于基類的部分操作
如果在基類中有一個不可訪問或刪除掉的析構函數,則派生類中合成的默認和拷貝構造函數將是被刪除的,因為編譯器無法銷毀派生類對象的基類部分
編譯器不會合成一個刪除掉的移動操作。當我們使用=default請求一個移動操作時,如果基類中的對應操作是刪除的或不可訪問的,那么派生類中該函數是被刪除的,原因是派生類對象的基類部分不可移動。同樣,如果基類的析構函數是刪除或不可訪問的,則派生類的移動構造函數也將是被刪除的