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 C
vẫn còn tồn tại không?
enable_shared_from_this
phải là một cơ sở rõ ràng dễ tiếp cận. Trong ví dụ của tôi, nó là. C
là một cấu trúc. Nó kế thừa công khai.
class
và public
. Tôi chọn struct
ví 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_ptr
chết cuối cùng . Ngay cả khi weak_ptr
khố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_this
khô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~A
và~B
, như xuống đúcthis
đểC*
)