構造和析構函式呼叫順序

2021-08-25 08:15:58 字數 760 閱讀 3067

c++中建構函式與析構函式的呼叫順序

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

基類建構函式、物件成員建構函式、派生類本身的建構函式  

派生類本身的析構函式、物件成員析構函式、基類析構函式(與構造順序正好相反) 

區域性物件,在退出程式塊時析構

靜態物件,在定義所在檔案結束時析構

全域性物件,在程式結束時析構 

繼承物件,先析構派生類,再析構父類 

物件成員,先析構類物件,再析構物件成員

#include using namespace std;

class base1

{public:

base1(void){cnt++;cout<<"base1::constructor("class a

{public:

a(){cout<<"a::constructor"a::constructor

b::constructor

c::constructor

d::constructor

c::deconstructor

b::deconstructor

a::deconstructor

----->static b b

a::constructor

c::constructor

d::constructor

c::deconstructor

a::deconstructor

*/

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

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

繼承和建構函式析構函式呼叫順序

繼承 的重用性 using namespace std 人類 class human protected char name int age 男人 class man public human private 兄弟 char brother void work human h void main 向...

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

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...