简介
std::shared_ptr
std::shared_ptr 中的类型擦除
关键理解这种行为在于 std::shared_ptr 执行类型擦除的方式。创建时,共享指针存储一个删除器函数,该函数确定应如何销毁其托管对象。该删除器可以显式指定,也可以默认使用delete删除对象。
保留析构函数信息
当从另一个shared_ptr复制或构造时,删除器函数是保存下来。这意味着即使从 std::shared_ptr
示例插图
问题中提供的代码演示了此功能。以下行解释了该行为:
<code class="cpp">v.push_back(std::shared_ptr<test>(new test()));</code>
这里,创建了类 test 的实例的共享指针并将其添加到向量 v。
<code class="cpp">v.push_back(static_cast<std::shared_ptr<void>>(v.back()));</code>
然后要测试的共享指针显式转换为 std::shared_ptr
符合标准
std::shared_ptr
结论
而 std::shared_ptr
以上是std::shared_ptr 如何确保清理期间正确的析构函数调用?的详细内容。更多信息请关注PHP中文网其他相关文章!