c++内存管理操作符重载

内存管理操作符new,new[],delete和delete[]同样也可以进行操作符重载,其重载形式既可以是类成员函数的形式,又可以是顶层函数的形式。在设计一般的程序时,使用内建的内存管理操作符基本够用了,只有在需要进行自己内存管理时才会对内存管理操作符进行重载。

操作符new的重载函数有两种形式:
void *类名::operator new(size_t size)
{
//以类成员函数的形式重载new操作符
}

void *operator new(size_t size)
{
//以顶层函数的形式重载new操作符
}
两种方式的重载函数返回值都是相同的,返回值都是【void *】 类型,重载函数的参数都有一个参数,且均为size_t类型,在重载new和new[]操作符时,无论是以何种形式进行重载的,重载函数的第一个参数必须是size_t类型,该参数表示的含义是要分配空间的大小,对于new[]的重载函数而言,size_t类型参数则表示所需要分配的所有空间的总和,当然,重载函数也可以有其他的参数,其他参数可以根据需要增加,但是第一个参数必须是size_t类型,其他参数可以根据需要增加,但是第一个参数必须是size_t类型。下面的重载就是错误的:

void *类名::operator new(void *ptr){}

同样的delete操作符也有两种重载形式:
void 类名::operator delete(void *ptr)
{
//以类成员函数的形式重载delete操作符
}

void 类名::operator delete(void *ptr)
{
//以类成员函数的形式重载delete操作符
}
两种方式均是返回void,并且两种重载方式都必须有一个参数,void指针,该指针指向需要释放的内存空间,重载delete和delete[]操作符同样也都必须有一个参数,该参数为一个void型指针,指向需要释放的内存空间,当然重载函数同样可以根据需要添加其他参数,但是第一个指向待释放的内存空间的void型指针这个参数必不可少。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值