有時候我們做一些筆試或者是面試中可能會遇到定義一些類,然後叫你寫出類的建構函式和析構函式呼叫順序。這時候我們就需要對這個有了解才能夠正確的做出來。先看看下面的一段**。
#include using namespace std;
class a
~a()
};class b : public a
~b()
};class c : public b
~c()
};class d : public c
~d()
};int main()
來看看下面的執行結果我們就會明白其中的呼叫順序是怎麼一回事了。如果看不明白可以自己上機實踐一下,只要我們掌握其中的原理,對於其它的變換就能夠快速的寫出構造和析構函式的呼叫順序問題。
記住析構函式的呼叫順序與建構函式是相反的。
a()a()b()
a()b()
c()a()
b()c()
d()~d()
~c()
~b()
~a()
~c()
~b()
~a()
~b()
~a()
~a()
C 類的建構函式和析構函式的呼叫順序
有時候我們做一些筆試或者是面試中可能會遇到定義一些類,然後叫你寫出類的建構函式和析構函式呼叫順序。這時候我們就需要對這個有了解才能夠正確的做出來。先看看下面的一段 include using namespace std class a a class b public a b class c pub...
C 類的建構函式和析構函式
建構函式是一類特殊的成員函式,它的目的是完成物件的初始化。建構函式的名字和類名相同,可以有引數,但不能有返回型別。class classname classname 引數列表2 建構函式也可以在類外定義 classname classname 引數列表2 物件的初始化總會通過某個建構函式來完成,即使...
C 建構函式 析構函式和拷貝構造的呼叫
建構函式是在建立給定型別的物件時執行的類方法。建構函式具有與類相同的名稱,它通常初始化新物件的資料成員。析構函式 destructor 與建構函式相反,當物件結束其生命週期,如物件所在的函式已呼叫完畢時,系統自動執行析構函式。析構函式往往用來做 清理善後 的工作。拷貝建構函式是一種特殊的建構函式,其...