Previous Section  < Free Open Study >  Next Section

Example Code for Leak #6


#include <iostream.h> 

class Point {

 int x, y;

 char* color;

public:

 Point(int, int, char*);

 Point(const Point&);

 ~Point();

 void print();

// Note the commented-out operator=

// const Point& operator=(const Point& rhs);

};

Point::Point(int new_x, int new_y, char* col)

{

 x = new_x; y = new_y;

 color = new char[strlen(col)+1];

 strcpy(color, col);

}

Point::Point(const Point& rhs)

{

 x = rhs.x; y = rhs.y;

 color = new char[strlen(rhs.color)+1];

 strcpy(color, rhs.color);

Point::-Point()}

{

 delete color;

}



void

Point::print()

{

 cout << ''I'm a point at ('';

 cout << x <<'', '' << y << '')\n'';

 cout << ''My color is '' <<color<<''.\n\n'';

}

// The following operation is a sample

// implementation of the overloaded assignment

// operator for the Point class. It is important that

// the function allow for assignment of one object

// to itself. The returned reference is marked

// constant so that the return value of overloaded

// operator= cannot be used as an lvalue.

// That is, (x=y) = z is illegal.

/*

const Point&

Point::opertor=(const Point& rhs)

{

// Avoid assignment to self.

 if(this == &rhs) {

  return(*this);

 }

 x = rhs.x; y = rhs.y;

 delete color;

 color = new char[strlen(rhs.color)+1];

 strcpy(color, rhs.color);

 return(*this);

}

*/



main()

{



 Point p1(10, 10, ''Blue'');

 Point p2(15, 18, ''Green");

 p1.print(); p2.print();

 p2=p1;

 p1.print(); p2.print();

}

    Previous Section  < Free Open Study >  Next Section