เช่นเดียวกับส่วนก่อนหน้า ในคลาสที่ได้รับ destructor ไม่สามารถดูดซับโดยคลาสที่ได้รับ
ประเด็นสำคัญคือทุกคนต้องมีความชัดเจนเกี่ยวกับ ลำดับการเรียก ของ destructor ของคลาสที่ได้รับและคลาสพื้นฐาน ลำดับการเรียกของ destructor นั้นตรงกันข้ามกับของตัวสร้างคลาสโดยสิ้นเชิง และสังเกตลำดับการโทร:
/************************************//Des: การสาธิตการสอน C++//Author: Huang/ /ลิขสิทธิ์:www.dotcpp.com//วันที่: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 จะสร้างคลาสพื้นฐานขึ้นมาก่อน ในขณะที่ลำดับการทำลายจะกลับกัน
ลำดับการเรียกตัวสร้าง: คลาสพื้นฐาน -> คลาสที่ได้รับ
ลำดับการเรียก Destructor: คลาสที่ได้รับ -> คลาสพื้นฐาน
โปรดลองด้วยตัวเอง