Используйте оператор разрешения области (: :), чтобы вызвать глобальное определение для operator new
, в противном случае он всегда будет использовать перегруженный operator new
, за исключением, конечно, в случае placement new operator
, который в любом случае не предназначен для перегрузки.
class Test {
public:
void* operator new( size_t );
void operator delete( void* );
};
int main()
{
Test* pTest1 = ::new Test();
Test* pTest2 = new Test();
/*
do some stuff
*/
::delete pTest1;
delete pTest2;
return 0;
}
Обратите внимание на использование соответствующего определения для оператора удаления.