关闭

Effective C++回顾(5)

1094人阅读 评论(0) 收藏 举报

 

条款9:避免遮掩了new的正规形式

那么new有多少种正规形式,对于一个完整的new它应该有下面四种类型

void * operator new (size_t size)
{ return ::operator new (size); }
void operator delete(void * p)
{ ::operator delete (p); }

void * operator new[](size_t size)
{ return ::operator new (size * kkk); }
void operator delete[](void *p)
{ ::operator delete (p); }

void * operator new(size_t size, void *p)
{ return p; }
void operator delete(void *p, void *p2)
{ ::operator delete(p); }

void * operator new[](size_t size, void *p)
{ return ::operator new (size * kkk); }
void operator delete[](void *p, void *p2)
{ ::operator delete (p); }

尤其是对于[]的操作,要重点注意。

下面是new所对应的调用方法。

void ITLionWoo();

new T;

new T[10]

new (ITLionWoo)T;

new (ITLionWoo)T[10];

所以对于类的设计者来说,如果要重载new操作,最好是实现所有的new操作,以防万一。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:275671次
    • 积分:3850
    • 等级:
    • 排名:第8569名
    • 原创:92篇
    • 转载:5篇
    • 译文:24篇
    • 评论:61条
    文章分类