Tôi có một class A
sử dụng phân bổ bộ nhớ heap cho một trong các trường của nó. Lớp A được khởi tạo và được lưu trữ dưới dạng trường con trỏ trong một lớp khác ( class B
.
Khi tôi thực hiện với một đối tượng của lớp B, tôi gọi delete
, mà tôi giả sử gọi là hàm hủy ... Nhưng điều này có gọi cả hàm hủy của lớp A không?
Biên tập:
Từ các câu trả lời, tôi lấy đó (vui lòng chỉnh sửa nếu không chính xác):
delete
của một thể hiện của B gọi B :: ~ B ();- mà gọi
A::~A();
A::~A
nên rõ ràngdelete
tất cả các biến thành viên được phân bổ heap của đối tượng A;- Cuối cùng, việc lưu trữ khối bộ nhớ đã nói của lớp B được trả về heap - khi mới được sử dụng, trước tiên, nó cấp phát một khối bộ nhớ trên heap, sau đó gọi các hàm tạo để khởi tạo nó, bây giờ sau khi tất cả các hàm hủy đã được gọi để hoàn thiện đối tượng khối nơi đối tượng cư trú được trả về heap.