可以 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中文網其他相關文章!