行业知识
【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
上一篇:不给签备案合同可以退款吗怎么投诉
下一篇:奥比岛服务器怎么换?