Dường như có hai cách để tạm thời lấy quyền sở hữu của tài nguyên được trỏ đến bởi một weak_ptr
:std :: weak_ptr: khóa hoặc shared_ptr constructor?
- Sử dụng
lock()
- Vượt qua
weak_ptr
đến một constructorshared_ptr
Cả hai tạo ra một shared_ptr
, với khóa quay lại nullptr
trong trường hợp weak_ptr
trống và công cụ xây dựng shared_ptr
ném một ngoại lệ.
Vì vậy, câu hỏi đặt ra là: khi nào nên sử dụng cái này hay cái kia? Có nguyên tắc chung hoặc thực tiễn tốt nhất liên quan đến điều này không?