可以 std::unique_ptr
在 C 中,标准库中的某些模板需要完整类型才能实例化。然而,std::shared_ptr 和 std::unique_ptr 是部分异常,允许对特定成员使用不完整类型进行实例化。
部分异常背后的原因:
避免未定义使用原始指针、std::shared_ptr 和 std::unique_ptr 删除不完整类型可能引起的行为在某些情况下允许不完整的类型。这使得诸如在 PIMPL 中使用智能指针之类的习惯用法成为可能,同时最大限度地降低风险。
不完整类型的Unique_ptr 要求:
与shared_ptr 不同,unique_ptr 需要容量更有限的完整类型,当 ~P()、reset() 和移动赋值运算符=() 为
Shared_ptr 对不完整类型的要求:
Shared_ptr 在其默认构造函数 P()、复制构造函数 P(const P&) 中使用时可以用不完整类型实例化,并移动构造函数 P(P&&)。然而,像重置()和移动赋值=()这样的操作需要完整类型。
结论:
虽然unique_ptr和shared_ptr都提供了对不完整类型的部分支持,但它们的要求各不相同。了解这些要求对于避免未定义的行为并确保有效使用至关重要。如果出现与前向声明相关的错误,值得考虑特定于实现的行为的可能性。
以上是`std::unique_ptr` 可以与不完整类型一起使用吗?的详细内容。更多信息请关注PHP中文网其他相关文章!