ฉันมีอันclass A
ที่ใช้การจัดสรรหน่วยความจำฮีปสำหรับหนึ่งในฟิลด์ของมัน คลาส A ถูกสร้างและเก็บเป็นฟิลด์ตัวชี้ในคลาสอื่น ( class B
.
เมื่อฉันทำกับวัตถุของคลาส B ฉันเรียกdelete
ซึ่งฉันคิดว่าเรียกว่า destructor ... แต่สิ่งนี้เรียกว่า destructor ของคลาส A ด้วยหรือไม่
แก้ไข:
จากคำตอบที่ฉันใช้ (โปรดแก้ไขหากไม่ถูกต้อง):
delete
ของอินสแตนซ์ของ B เรียก B :: ~ B ();- สายไหน
A::~A();
A::~A
ควรdelete
กำหนดตัวแปรสมาชิกที่จัดสรรฮีปทั้งหมดของวัตถุ A อย่างชัดเจน- ในที่สุดการจัดเก็บหน่วยความจำบล็อกกล่าวว่าตัวอย่างของการเรียน B จะถูกส่งกลับไปยังกอง - เมื่อใหม่ถูกนำมาใช้เป็นครั้งแรกที่จัดสรรบล็อกของหน่วยความจำบนกองก่อสร้างแล้วเรียกเพื่อเริ่มต้นมันตอนนี้หลังจาก destructors ทั้งหมดได้รับการเรียกเพื่อจบวัตถุ บล็อกที่วัตถุที่อยู่จะถูกส่งกลับไปยังกอง