小工具知识网

当前位置: 首页 > 行业知识 > 【C++】定制删除器和特殊类设计(饿汉和懒汉~)

行业知识

【C++】定制删除器和特殊类设计(饿汉和懒汉~)

2026-10-29 04:33:34 来源:互联网转载

文章目录

  • 定制删除器
  • 一、设计一个只能在堆上(或栈上)创建的类
  • 二、单���模式
    • 1.饿汉模式
    • 2.懒汉模式
  • 总结

    定制删除器

    我们在上一篇文章中讲到了智能指针,相信大家都会有一个问题,智能指针该如何辨别我们的资源是用new int开辟的还是new int[]开辟的呢,要知道[]必须与delete[]匹配否则会有未知错误的,这个问题我们就交给定制删除器来解决:

    int main(){shared_ptr sp1(new int[10]);shared_ptr sp2(new string[10]);return 0;}

     比如上面的代码,一旦运行就会立即引发崩溃,这是因为shared_ptr默认的释放方式是delete而不是delete[]。

     我们从文档中可以看到shared_ptr有一个模板参数是del,这个参数其实就是定制删除器,为了解决释放资源的问题。

    template struct DeleteArray{void operator()(const T* ptr){delete[] ptr;cout 

上一篇:不给签备案合同可以退款吗怎么投诉

下一篇:奥比岛服务器怎么换?