有哪些 C 智慧指標實作可用? C 03 std::auto_ptr:有限的垃圾回收,無法容納陣列分配的對象,不支援拷貝,已廢棄。 std::auto_ptr_ref: 不是智慧指針,與 std::auto_ptr 一起使用複製和賦值。 C 11 std::unique_ptr: 取代std::auto_ptr,改進性能,適用於數組,可用於STL std::shared_ptr:引用計數智慧指針,可以被多個擁有者共享,線程安全。 std::weak_ptr: 對 std::shared_ptr擁有的物件的引用,不會阻止 Boost boost::shared_ptr:符合標準的shared -pt r,容易使用,某些方面的開銷很高 boost::weak_ptr:符合標準的weak_ptr,允許非擁有引用boost::shared_ptr。 boost::scoped_ptr: 與std::unique_ptr類似,開銷比boost::shared_ptr少,不能用於 STL 容器。 boost::intrusive_ptr: 可自訂的智慧指針,用於建立您自己的智慧指標相容類別。 boost::shared_array: 陣列的Shared_ptr,支援動態陣列分配和 boost::scoped_array: Qt QPointer: QObject 及其衍生類別的弱智慧指針,不提供強的指針。 QSharedDataPointer:強智慧指針,需要手動引用計數,可以子類化QSharedData。 QExplicitlySharedDataPointer:與QSharedDataPointer類似,提供更多控制超過 QSharedPointer: 原子參考計數,>QSharedPointer: 原子引用計數,線程安全,可自訂計數,高開銷。 QWeakPointer: 弱智慧指針,與QSharedPointer防止循環引用。 QScopedPointer: 單一擁有者智慧指針,比 QSharedPointer 開銷更少。