/********************************************\
|????歡迎轉(zhuǎn)載, 但請(qǐng)保留作者姓名和原文鏈接, 祝您進(jìn)步并共勉!???? |
\********************************************/
關(guān)于"Effective C++"中的new/delete的補(bǔ)充
作者: Jerry Cat
時(shí)間: 2006/06/01
鏈接:?http://m.shnenglu.com/jerysun0818/archive/2006/06/01/8009.html
在條款9中強(qiáng)調(diào)了要避免遮掩了new的正規(guī)形式
那么new有多少種正規(guī)形式? 對(duì)于一個(gè)完整的new它應(yīng)該有下面四種類型:
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 * n); }
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 * n); }
void operator delete[](void *p, void *p2)
{ ::operator delete (p); }
尤其是對(duì)于[]的操作,要重點(diǎn)注意。
下面是new所對(duì)應(yīng)的調(diào)用方法。
void foo();
new T;
new T[10]
new (foo)T;
new (foo)T[10];
所以對(duì)于類的設(shè)計(jì)者來(lái)說(shuō),如果要重載new操作,最好是實(shí)現(xiàn)所有的new操作,以防萬(wàn)一。
posted on 2006-06-01 02:08
Jerry Cat 閱讀(846)
評(píng)論(1) 編輯 收藏 引用