同上一節一樣,在衍生類別中,析構函數也無法被衍生類別吸收。
重點大家需要清楚衍生類別和基底類別的析構函數的呼叫順序,析構函數的呼叫順序與建構子則完全相反,我們可以在衍生類別析構函式和基底類別析構函式中輸出一個訊息,觀察調用順序:
/**************************************//Des:C++教學demo//Author: Huang//Copyright:www.dotcpp.com//Date:2017/11/15******************************* *******/#include<iostream>usingnamespacestd;classClock{private:intH;intM;intS;public:Clock(){cout<<Clock'sConstructorCalled!<<endl;}~Clock(){cout< <Clock'sDestructorCalled!<<endl;}};classAlarmClock:publicClock{private:intAH;intAM;public:AlarmClock(){cout<<AlarmClock'sConstructorCalled!<<endl;}~AlarmClock(){cout<<AlarmClock'. sDestructorCalled!<<endl;}};intmain(){AlarmClockA;return0;}
運行截圖:
大家可以看到定義一個衍生類別AlarmClock會先產生基底類,同時析構順序卻是相反的。
建構函數呼叫順序:基類->衍生類
析構函數呼叫順序:衍生類別->基底類
請大家親自上機實驗。