weak_ptr可以说是shared_ptr的一种扩充,它既不可以提领指针也不可以检查是否为空,一般是通过shared_ptr进行创建,但是不会影响shared_ptr的引用次数。它可以使用下面代码判断指针是否空悬, std::sheard_ptr<int> a = std::make_shared<int>(); std::weak_ptr<int> b(a); a = nullptr; if(b.expired()...
为了解决循环引用的问题,可以使用std::weak_ptr,它可以避免形成循环引用,因为**std::weak_ptr不会增加引用计数**。只有当需要使用对象时,可以将std::weak_ptr转换成std::shared_ptr,如果对象已经被销毁,则转换会失败。 以下是使用std::weak_ptr改进上述代码的示例: #include<memory>classB;// Forward declaratio...
升级成为会员
weak_count:引用计数的计数,即use_count的计数。 如果对象数据地址多次赋值给shared_ptr<>则use_count++,而weak_count==1; 如果对象数据地址多次赋值给weak_ptr<>则use_count不变,而weak_count++; 循环引用问题(从其他大牛那里抄的,例子很有带入感): 例子1: structNode { Node(intvalue) :_value(value) {...
weak_count:引用计数的计数,即use_count的计数。 如果对象数据地址多次赋值给shared_ptr<>则use_count++,而weak_count==1; 如果对象数据地址多次赋值给weak_ptr<>则use_count不变,而weak_count++; 循环引用问题(从其他大牛那里抄的,例子很有带入感): ...