I think it's much better to define a pool class and just use methods or static functions to get instances instead of overloading new/delete per class - it's much much more clearer and explicit; having your objects not going through the global new and delete mechanisms is a big gotcha.