Define new.delete/new[]/delete[] operators : New Delete « Overload « C++






Define new.delete/new[]/delete[] operators

  
#include <iostream>
#include <stdlib.h>
using namespace std;
class loc 
{
  int longitude, latitude;
  public:
    loc(void) {}              
    ~loc(void);
    loc (int lg, int lt)
     {
      longitude = lg;
      latitude = lt;
     }

    void show(void)
      {
      cout << longitude << " ";
      cout << latitude << endl;
      }

    void *operator new(size_t size);
    void operator delete(void *p);
    void *operator new[](size_t size);
    void operator delete[](void *p);
 };

loc::~loc(void)
{
   cout << "In the destructor function" << endl;
}

void *loc::operator new(size_t size)
{
  cout << "In the custom new operator function." << endl;
  return malloc(size);
}

void loc::operator delete(void *p)
{
  cout << "In the custom delete operator function." << endl;
  free(p);
}

void *loc::operator new[](size_t size)
{
  cout << "In the custom new ARRAY allocator function." << endl;
  return malloc(size);
}

void loc::operator delete[](void *p)
{
  cout << "Freeing the ARRAY in the custom delete function." << endl;
  free(p);
}

int main(void)
{
  loc *p1, *p2;
  int i;

  p1 = new loc(10,20);
  if (!p1)
  {
      cout << "Allocation error\n";
      exit(1);
  }

  p2 = new loc[10];
  if (!p2)
  {
     cout << "Allocation error\n";
      exit(1);
  }
  p1->show();
  for(i=0; i<10; i++)
     p2[i].show();
  delete p1;
  delete [] p2;
}
  
    
  








Related examples in the same category

1.Demonstrate overloaded new and delete.Demonstrate overloaded new and delete.
2.Overload new, new[], delete, and delete[] for the three_d class.