C++ 智慧指針整合到 STL 中,方便管理指針,避免記憶體問題。 STL 包含四個智慧型指標類型:std::unique_ptr:指向唯一所有權物件std::shared_ptr:指向多重所有權物件std::weak_ptr:指向潛在無效物件的弱參考std::auto_ptr(已廢棄)
C++ 中的智慧指標旨在簡化指標管理,避免記憶體洩漏和懸垂指標等問題。為了方便使用,智慧指標已整合到標準範本庫 (STL) 中。
STL 中有四種類型的智慧型指標:
std::unique_ptr
:指向唯一所有權物件std::shared_ptr
:指向多重所有權物件std::weak_ptr
:指向潛在無效物件的弱參考#std::auto_ptr
:已廢棄,不建議使用智慧指標已整合到STL 中,這表示您可以針對任何STL 容器使用它們。例如:
// 使用 unique_ptr 存储整数 std::vector<std::unique_ptr<int>> int_ptrs; // 使用 shared_ptr 存储字符串 std::list<std::shared_ptr<std::string>> str_ptrs;
假設我們要建立一個包含檔案路徑的容器。我們可以使用智慧指標來確保在容器的生存期內文件路徑物件不會被意外銷毀。
#include <vector> #include <memory> class FilePath { public: FilePath(const std::string& path) : path_(path) {} ~FilePath() = default; private: std::string path_; }; int main() { // 使用 unique_ptr 存储 FilePath 在 vector 中 std::vector<std::unique_ptr<FilePath>> file_paths; file_paths.emplace_back(std::make_unique<FilePath>("path/to/file1")); file_paths.emplace_back(std::make_unique<FilePath>("path/to/file2")); // 使用 FilePath 对 vector 进行迭代,不会出现悬垂指针 for (auto& file_path : file_paths) { std::cout << file_path->path_ << std::endl; } return 0; }
這段程式碼使用 std::unique_ptr
來管理 FilePath
物件。當容器超出作用域時,智慧指標將自動銷毀所指向的對象,確保沒有記憶體洩漏。
以上是C++ 智慧型指標如何整合到標準範本庫 (STL) 中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!