// File: new2.C // // Testing overloaded new and delete operators #include #include #include class Test { public: int data ; Test() ; ~Test() ; void *operator new(size_t) ; void *operator new[](size_t) ; void operator delete(void *) ; void operator delete [] (void *) ; } ; Test::Test() { cout << "Test Constructor" << endl ; data = 0 ; } Test::~Test() { cout << "Test Destructor" << endl ; } void *Test::operator new(size_t n) { cout << "new: n =" << n << endl ; void *ptr = malloc(n) ; return ptr ; } void *Test::operator new[](size_t n) { cout << "new[]: n =" << n << endl ; void *ptr = malloc(n) ; return ptr ; } void Test::operator delete(void *ptr) { cout << "delete" << endl ; free(ptr) ; } void Test::operator delete[](void *ptr) { cout << "delete[]" << endl ; free(ptr) ; } main() { cout << "\n***Testing the new operators" << endl ; Test *ptr = new Test ; Test *A = new Test[10] ; cout << "\n***Test the delete operators" << endl ; delete ptr ; delete [] A ; }