C++智能指针实例详解
作者:野牛程序员:2024-01-22 17:49:40 C++阅读 2769
智能指针是C++中用于管理动态分配的内存的工具,有助于避免内存泄漏和提高代码的安全性。以下是C++中两种常用的智能指针类型的简要示例:std::shared_ptr
和 std::unique_ptr
。
std::shared_ptr 示例:
#include <iostream> #include <memory> class MyClass { public: MyClass(int val) : value(val) { std::cout << "构造函数,数值: " << value << std::endl; } ~MyClass() { std::cout << "析构函数,数值: " << value << std::endl; } void display() { std::cout << "数值: " << value << std::endl; } private: int value; }; int main() { // 创建 shared_ptr,自动管理内存 std::shared_ptr<MyClass> sharedPtr = std::make_shared<MyClass>(42); // 多个 shared_ptr 共享同一块内存 std::shared_ptr<MyClass> sharedPtr2 = sharedPtr; // 使用 shared_ptr sharedPtr->display(); sharedPtr2->display(); // shared_ptr 在不再需要时自动释放内存 return 0; }
std::unique_ptr 示例:
#include <iostream> #include <memory> class MyUniqueClass { public: MyUniqueClass(int val) : value(val) { std::cout << "构造函数,数值: " << value << std::endl; } ~MyUniqueClass() { std::cout << "析构函数,数值: " << value << std::endl; } void display() { std::cout << "数值: " << value << std::endl; } private: int value; }; int main() { // 创建 unique_ptr,独占所有权 std::unique_ptr<MyUniqueClass> uniquePtr = std::make_unique<MyUniqueClass>(73); // 使用 unique_ptr uniquePtr->display(); // unique_ptr 不允许复制所有权,以下行将导致编译错误 // std::unique_ptr<MyUniqueClass> uniquePtr2 = uniquePtr; // 在离开作用域时,unique_ptr 自动释放内存 return 0; }
这两个示例分别演示了 std::shared_ptr
和 std::unique_ptr
的基本用法。根据需求,选择适合场景的智能指针类型。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
