Lớp học của tôi kế thừa từ nhiều cơ sở, một trong số đó là std::enable_shared_from_this. Nó phải là cơ sở đầu tiên?
Giả sử mã ví dụ sau:
struct A { ~A(); };
struct B { ~B(); };
struct C : A, B, std::enable_shared_from_this<C> {};
std::make_shared<C>();
Khi ~A()và ~B()chạy, tôi có thể chắc chắn rằng bộ lưu trữ nơi Cvẫn còn tồn tại không?
enable_shared_from_thisphải là một cơ sở rõ ràng dễ tiếp cận. Trong ví dụ của tôi, nó là. Clà một cấu trúc. Nó kế thừa công khai.
classvà public. Tôi chọn structví dụ để tránh gõ.
~weak_ptr(); Hiệu ứng: Phá hủy weak_ptrđối tượng này nhưng không có tác dụng đối với đối tượng mà con trỏ được lưu trữ của nó trỏ tới." Nhấn mạnh mỏ.
shared_ptrchết cuối cùng . Ngay cả khi weak_ptrkhối điều khiển không bị giải phóng, tôi cũng không nghĩ nó quan trọng.
std::enable_shared_from_thiskhông làm gì nhiều. Ví dụ bạn có vẻ OK với tôi (giả sử bạn không cố gắng để làm bất cứ điều gì thông minh trong~Avà~B, như xuống đúcthisđểC*)