建構函式和析構函式的呼叫順序 引申知識點

2021-07-22 05:04:25 字數 831 閱讀 7647

建構函式的呼叫順序如下:

1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。

2.成員類物件建構函式。如果有多個成員類物件則建構函式的呼叫順序是物件在類中被宣告的順序,而不是它們出現在成員初始化表中的順序。

3.派生類建構函式。

注: 類不能被宣告稱const函式。

析構函式

析構函式的呼叫順序與建構函式的呼叫順序正好相反,將上面3個點反過來用就可以了,首先呼叫派生類的析構函式;其次再呼叫成員類物件的析構函式;最後呼叫基類的析構函式。

析構函式在下邊3種情況時被呼叫:

1.物件生命週期結束,被銷毀時(一般類成員的指標變數與引用都i不自動呼叫析構函式);

2.delete指向物件的指標時,或delete指向物件的基類型別指標,而其基類虛構函式是虛函式時;

3.物件i是物件o的成員,o的析構函式被呼叫時,物件i的析構函式也被呼叫。

引申知識點:

1.繼承

通過繼承聯絡在一起的類構成一種層次關係。通常在層次關係的根部有乙個基類,其他類則直接或間接的從基類繼承而來,這些繼承得到的類成為派生類

2.虛函式

基類希望他的派生類定義適合自身的版本,此時基類就將這些函式宣告成虛函式。(在基類中)

派生類在其內部對所有重新定義的虛函式進行宣告。(派生類中)這樣的函式前加virtual關鍵字,如果不加,需要在形參列表裡加override關鍵字。

注:在繼承關係中根節點的類通常會定義乙個虛析構函式。

構造和析構函式呼叫順序

c 中建構函式與析構函式的呼叫順序 c 建構函式和析構函式的呼叫順序 基類建構函式 物件成員建構函式 派生類本身的建構函式 派生類本身的析構函式 物件成員析構函式 基類析構函式 與構造順序正好相反 區域性物件,在退出程式塊時析構 靜態物件,在定義所在檔案結束時析構 全域性物件,在程式結束時析構 繼承...

析構函式和建構函式的呼叫順序

先看看建構函式的呼叫順序規則,只要我們在平時程式設計的時候遵守這種約定,任何關於建構函式的呼叫問題都能解決 建構函式的呼叫順序總是如下 1.基類建構函式。如果有多個基類,則建構函式的呼叫順序是某類在類派生表中出現的順序,而不是它們在成員初始化表中的順序。2.成員類物件建構函式。如果有多個成員類物件則...

建構函式和析構函式的呼叫順序

using system public class samplesarray public static class spublic static void c s 靜態類不能包含析構函式 public class apublic a a public class b apublic b b pub...