Wenn eine Klasse den Operator new definiert (z.B. mit eigener Signatur) ist das Standard-new überdeckt:
typedef void (*fuptr())
class X
{ ...
public:
void* operator new(size_t size,
fuptr f);
};
void fu();
X *px1 = new(fu) X;
X *px2 = new X; // FEHLER!
Statt den Anwender zu zwingen, ::new zu verwenden:
class X
{ ...
public:
void* operator new(size_t size,
fuptr f);
void* operator new(size_t size)
{ return ::new char[size];
}
};