C++ 的智能指针笔记

                     

贡献者: addis; admin

  • 本文处于草稿阶段。

1. unique_ptr

// 创建(无法指定删除器,默认用 delete 释放)
unique_ptr<int> ptr = make_unique<int>(42);
unique_ptr<int> ptr2 = std::move(ptr1); // 转移所有权
int* rawPtr = ptr.release(); // 释放所有权并返回裸指针(被管理的对象不会被释放)
int* rawPtr = ptr.get(); // 返回裸指针(不释放所有权)
ptr.reset(ptr3); // 释放当前对象并管理新的对象
ptr.reset(); // 手动释放对象

// 自定义删除器类
struct Deleter {
    void operator()(int* ptr) {
        cout << "Deleting resource: " << *ptr << endl;
        delete ptr;
    }
};

// 用法
unique_ptr<int, Deleter> ptr(new int(42)); // 默认使用 Deleter() 新建删除器
unique_ptr<int, Deleter> ptr2(new int(42), Deleter()); // 手动提供删除器

2. shared_ptr

3. weak_ptr


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利