CS201 Assignment No 4 Spring 2012 solution

Problem Statement:     Location Calculation     

 

You are required to write a program for calculating location somewhere on the map. There are two parameters (coordinates) used in calculating a location. One is longitude and the other is latitude. You need to overload ++new and delete operators for this.

Detailed Description:

  • You are required to create a class named Location.
  • It will have two private data member longitude and latitude.
  • These data members will be assigned values through constructor parameters. For example obj1(20,30).
  • Overloaded ++ operator will increase the both longitude and latitude values by one, overloaded — will decrease both by one.
  • By overloading new operator, you will allocate the memory dynamically for the object of class Location.
  • The overloaded delete operator will free (de-allocate) the allocated memory.
  • You have to create two objects of class Location. One object will be created through overloaded new operator and other will be created without it.
  • A message “Overloaded new operator called”, embedded inside overloading function for new operator, should be displayed when the object is created through new operator.
  • Similarly, a message “Overload delete operator called” should be displayed upon calling overloaded function of delete operator.
  • Assign the values (10, 20) and (30, 40) for longitude and latitude for object 1 and 2 respectively.

Idea Solution:

#include <iostream>
#include <cstdlib>
using namespace std

;class location
{
int longitude;
int latitude;
public:
location();
location(int j,int i);
void display();
void* operator new (size_t size);
location operator ++();
location operator –();

};
location::location()
{
longitude=0;
latitude=0;
}
location::location(int j,int i)
{
longitude=j;
latitude=i;
}

void location::display()
{
cout” Longitude : ” endl;
cout” Latitude : ” endl;
}

void* location::operator new(size_t size)
{
cout” Overloaded New operator Called”endl;
void *pointer=malloc(size);
return pointer;
}

location location::operator ++()
{
longitude+=1;
latitude+=1;
}

location location::operator –()
{
–longitude;
–latitude;
}

 

main()
{
location *loc,l2;
loc=new location(10,20);
loc[0].display();
cout” After calling Overloaded ++ operator on location 1″endl;
++loc;
loc[0].display();
cout”Coordinate for location 2 :”endl;
l2=location(30,40);
l2.display();
–l2;
cout” After calling Overloaded — operator”endl;
l2.display();
system (“pause”);
delete loc,l2;
}

DOWNLOAD SOLUTION HERE
loading...