可以为 operator new 写出多个重载版本,但是每一个版本的第一个参数都必须为 size_t 类型。其余的参数以 new 所指定的 placement arguements 为初值,出现在 new(…) 小括号里面的就是所谓的 placement arguements.
比如我们可以继续为 Foo 类型写 operator new 重载:
class Foo
{
public:
Foo() : _id(0)
{
cout << "default constructor. id = " << _id << endl;
}
Foo(int i) : _id(i)
{
cout << "constructor. id = " << _id << endl;
}
~Foo()
{
cout << "destructor. id = " << _id << endl;
}
//一般的 operator new 重载
void* operator new(size_t size)
{