Задал глупую вопрос. Из того, что я понимаю, одно использование Sleed_ptr - это проверить состояние подсчета общего указателя на объекте. Не могли бы мы просто использовать wared_ptr use_count (), чтобы получить эту информацию. Если да, то зачем нужен слабый_Птр?#include
#include
using namespace std;
int main() {
shared_ptr a(new int(10));
weak_ptr wa(a);
a.reset();
assert(a.use_count() == 0); // clause 1 - good. indicate no binding objects
assert(wa.lock() == nullptr); // clause 2 - good. same as above
return 0;
}
< /code>
Пункт 1 и 2 дает идентичные результаты.
Так почему нуждается в Sleed_ptr (помещение безопасности потока) для проверки на нулевые объекты при привязке, когда может быть shared_ptr.use_count () Сделайте работу?>
Подробнее здесь: https://stackoverflow.com/questions/792 ... -use-count