Giải pháp linh hoạt nhất cho vấn đề này là lấy được lớp học của bạn từ một lớp cơ sở có chức năng "diệt" ảo. Một cái gì đó như thế này:
class IDisposable {
public:
virtual void Release() = 0;
};
Thông thường, các đối tượng đa hình nên có trình phá hủy ảo để hỗ trợ dọn dẹp đối tượng thích hợp. Tuy nhiên điều này là không đầy đủ, bởi vì nó không tính đến khả năng quản lý bộ nhớ khác nhau của các đối tượng.
Mặt khác, phương pháp này không yêu cầu sử dụng trình phá hủy ảo. Nó bây giờ được thay thế bởi Release
chức năng mà cả hai: invokation của chính xác destructor và phát hành bộ nhớ bằng các phương tiện thích hợp.
chăm sóc của đối tượng destr
cả: hủy
Đối tượng trở về từ nhà máy sẽ thực hiện điều này "giao diện".
Tùy thuộc vào người sở hữu đối tượng khi được tạo. Nhưng nó không bao giờ là một ý tưởng tốt để trả về một con trỏ vì nó có không có ngữ nghĩa quyền sở hữu liên kết với nó. –