c++定制删除器

本文探讨了C++中定制删除器的概念,它利用了仿函数的特性。仿函数是一种可以像函数一样使用的对象,通过重载operator()实现。文中还给出了一个定制删除器的代码示例。
摘要由CSDN通过智能技术生成

定制删除器其实是利用仿函数

一、仿函数是什么?

不是函数但可以像函数一样使用,因为重载了operator()

简单举例:

template<class T>
struct Less
{
	bool operator()(const T& l, const T& r)
	{
		return l < r;
	}
};

void Test2()
{
	Less<int>less1;
	cout << less1(1, 2) << endl;
}

二、具体场景

void Teat()
{
	shared_ptr<FILE>spl((FILE*)fopen("test.txt", "w"));
}

上述场景中将产生错误,因为用fopen打开,要用fclose关闭

三、定制删除器举例

代码如下:

template<class T>//注意这里有模版
struct Del
{
	void operator()(const T* ptr)
	{
		delete ptr;
	}
};



struct Free//注意这里没有模版
{
	void operator()(void* ptr)
	{
		free(ptr);
	}
};



struct Fclose
{
	void operator()(FILE* ptr)
	{
		fclose(ptr);
	}
};


template<class T,class Delet
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值