c++智能指针怎么调用

c++
1134
2023/10/21 10:12:48
栏目: 编程语言
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在 C++ 中,智能指针通常有以下几种使用方式:

  1. 使用 std::shared_ptr:

    #include <memory>
    int main() {
        std::shared_ptr<int> ptr = std::make_shared<int>(10);
        *ptr = 20; // 通过指针访问对象
        std::cout << *ptr << std::endl; // 输出 20
        return 0;
    }
    
  2. 使用 std::unique_ptr:

    #include <memory>
    int main() {
        std::unique_ptr<int> ptr = std::make_unique<int>(10);
        *ptr = 20;
        std::cout << *ptr << std::endl;
        return 0;
    }
    
  3. 使用 std::weak_ptr:

    #include <memory>
    int main() {
        std::shared_ptr<int> sharedPtr = std::make_shared<int>(10);
        std::weak_ptr<int> weakPtr = sharedPtr;
        std::cout << *weakPtr.lock() << std::endl; // 输出 10
        sharedPtr.reset();
        if (weakPtr.expired()) {
            std::cout << "shared_ptr 已经被释放" << std::endl;
        }
        return 0;
    }
    

需要注意的是,当使用 std::shared_ptr 时,可以通过引用计数追踪对象的所有权,而 std::unique_ptr 则是通过独占所有权来实现的。而 std::weak_ptr 则允许对对象进行弱引用,不会增加引用计数,也不会阻止对象被销毁。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: c++多线程和多进程的区别是什么