一个析构策略,通常是一个函数指针或lambda表达式,用来删除对象。 在所有权转移过程中,原始指针会从源std::unique_ptr转移到目标std::unique_ptr,源std::unique_ptr将会被设置为nullptr。 假设有以下代码: std::unique_ptr<MyClass> ptr1(new MyClass()); std::unique_ptr<MyClass> ptr2 = std::move(ptr...
std::bind是C++标准库中的一个函数模板,用于将函数对象与其参数绑定在一起,生成一个新的可调用对象。它可以用于延迟调用函数,改变函数的参数顺序,或者固定某些参数的值。 std::make_shared是C++标准库中的一个函数模板,用于在动态内存中创建一个对象,并返回一个指向该对象的std::shared_ptr智能指针。它可以...
1. 关键的一句是 lambda 捕获了 shared_ptr ,即使外面的 shared_ptr 重置了,但是 lamdba 表达式中捕获的 shared_ptr 仍然存在,引用计数不会减为 0,可以保证回调回来的时候,该对象仍然存在。 尽量使用std::make_unique和std::make_...
引用计数指的是,所有管理同一个裸指针(raw pointer)的shared_ptr,都共享一个引用计数器,每当一个s...