以下是引用蚕头燕尾在2013-10-29 12:15:43的发言:
你说的某类的operator new[]是什么意思?是说经过自己的重载之后的new?
难到new不是全局公用的一个操作符么,就像+ - * /这样的……

new/delete分两种,一种是全局的,另一种是针对特定类的,我写个demo给你

程序代码:
#include <iostream>
using namespace std;
struct foo
{
explicit foo( int val=0 ) : val_(val)
{
cout << "(" << val_ << ")";
}
~foo()
{
cout << "<" << val_ << ">";
}
int val_;
static void* operator new[]( size_t size ); // 类形式的new/delete
static void operator delete[]( void* raw );
};
char buf[1000];
void* foo::operator new[]( size_t size )
{
//如果不是本类的,而是派生类的,要明确拒绝之
// return ::operator new(size);
if( 0 == size ) // 须要注意
size = 1;
//分配size字节内存;
//if(分配成功)
// return 指向内存的指针;
return buf; // 我只是做个演示
throw std::bad_alloc();
}
void foo::operator delete[]( void* raw )
{
//如果不是本类的,而是派生类的,要明确拒绝之
//{
// ::operator delete(raw);
// return;
//}
if( 0 == raw ) // 须要注意
return;
// 释放分配的内存
// 我只是做个演示
}
int main()
{
delete[] new foo[2];
return 0;
}