在C++中使用智能指針是為了管理動態分配的內存,避免內存泄漏和懸空指針的問題。C++11引入了std::shared_ptr和std::unique_ptr兩種智能指針,這兩種智能指針的用法如下:
#include <memory>
int main() {
std::shared_ptr<int> ptr1 = std::make_shared<int>(10);
std::shared_ptr<int> ptr2 = ptr1;
// 使用智能指針訪問對象
std::cout << *ptr1 << std::endl;
std::cout << *ptr2 << std::endl;
}
#include <memory>
int main() {
std::unique_ptr<int> ptr1 = std::make_unique<int>(10);
//std::unique_ptr<int> ptr2 = ptr1; // 編譯錯誤,unique_ptr不支持拷貝
// 使用智能指針訪問對象
std::cout << *ptr1 << std::endl;
}
除了shared_ptr和unique_ptr,C++11還引入了weak_ptr用于解決shared_ptr的循環引用問題。使用智能指針可以大大簡化內存管理,提高代碼的可維護性和安全性。