When you overload operator new( ) and operator delete( ), it’s important to remember that you’re changing only the way raw storage is allocated.The compiler will simply call your new instead of the default version to allocate storage, then call the constructor for that storage. So, although the compiler allocates storage and calls the constructor when it sees new, all you can change when.