Correct Method for Leak #7
#include <iostream.h>
class Point {
int x, y;
char* color;
public:
Point(int = 0, int = 0, char* = ''Red'');
~Point();
Point(const Point&);
void print();
const Point& operator=(const Point&);
const Point operator+(const Point&);
};
void
Point::print()
{
cout << ''I live at ('';
cout <<x<<'', ''<<y<<'') and'';
cout << ''I'm'' << str(color) <<''.\n'';
}
const Point
Point::operator+(const Point& rhs)
{
Point temp;
temp.x = x + rhs.x; temp.y = y + rhs.y;
delete temp.color;
//Not exactly a good color-mixing scheme!
temp.color = new char[strlen(color)+
strlen(rhs.color)+1];
sprintf(temp.color, ''%s%s'', color, rhs.color);
return(temp);
}
main()
{
Point p1(10, 10, ''Blue'');
Point p2(20, 60, ''Green'');
Point p3 = p1 + p2;
p3.print();
}
|