Нужно добавить в эту прогу перезагрузку операторов ввода и вывода (<<,>>) и обработку ошыбочного ввода и вывода
Код:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#pragma argsused
#include <iostream.h>
#include <conio.h>
//---------------------------------------------------------------------------
class point{
private:
int fx;
int fy;
public:
point();
~point();
point(const point & p);
point(int X,int Y);
void operator = (const point &p);
void operator += (const point &p);
__property int x = { read = fx };
__property int y = { read = fy };
};
//---------------------------------------------------------------------------
point::point(){
fx = 0;
fy = 0;
}
//---------------------------------------------------------------------------
point::~point(){}
//---------------------------------------------------------------------------
point::point(int X,int Y){
fx = X;
fy = Y;
}
//---------------------------------------------------------------------------
point::point(const point &p){
fx = p.fx;
fy = p.fy;
}
//---------------------------------------------------------------------------
void point::operator = (const point &p){
fx = p.fx;
fy = p.fy;
}
//---------------------------------------------------------------------------
void point::operator += (const point &p){
fx += p.fx;
fy += p.fy;
}
//---------------------------------------------------------------------------
class pixel : public point{
private:
short fred;
short fgreen;
short fblue;
public:
pixel();
~pixel();
pixel(const pixel & px);
pixel(short R, short G, short B, int X, int Y);
__property short red = { read = fred };
__property short green = { read = fgreen };
__property short blue = { read = fblue };
};
//---------------------------------------------------------------------------
pixel::pixel() : point(){
fred = 0;
fgreen = 0;
fblue = 0;
}
//---------------------------------------------------------------------------
pixel::pixel(const pixel & px) : point(px){
fred = px.fred;
fgreen = px.fgreen;
fblue = px.fblue;
}
//---------------------------------------------------------------------------
pixel::pixel(short R, short G, short B, int X, int Y) : point(X, Y){
fred = R;
fgreen = G;
fblue = B;
}
//---------------------------------------------------------------------------
pixel::~pixel(){
point::~point();
}
//---------------------------------------------------------------------------
int main(int, char**){
char c;
int x,y;
int r,g,b;
cout << endl << "Program for classes with:" << endl;
cout << "1. Constructors of different types." << endl;
cout << "2. Class inheritance." << endl;
cout << "3. Operator overloading." << endl << endl;
do {
cout << "Enter X coordinate: ";
cin >> x;
cout << "Enter Y coordinate: ";
cin >> y;
cout << endl;
point p0;
printf("class point: p0.x = %d,\tp0.y = %d\n", p0.x, p0.y);
point p1(x, y);
printf("class point: p1.x = %d,\tp1.y = %d\n", p1.x, p1.y);
point p2(p1);
printf("class point: p2.x = %d,\tp2.y = %d\n", p2.x, p2.y);
p0 = p1;
printf("class point, p0 = p1: p0.x = %d,p0.y = %d\n", p0.x, p0.y);
p0 += p1;
printf("class point, p0 += p1: p0.x = %d,p0.y = %d\n", p0.x, p0.y);
cout << endl << "Enter R - red color value (0-255): ";
cin >> r;
cout << "Enter G - green color value (0-255): ";
cin >> g;
cout << "Enter B - blue color value (0-255): ";
cin >> b;
cout << endl;
pixel px1;
printf("pixel px1;\npx1.x = %d, px1.y = %d, px1.red = %d, px1.green = %d, px1.blue = %d,\n\n", px1.x, px1.y, px1.red, px1.green, px1.blue);
pixel px2(r, g, b, x, y);
printf("pixel px2(r, g, b, x, y);\npx2.x = %d, px2.y = %d, px2.red = %d, px2.green = %d, px2.blue = %d,\n\n", px2.x, px2.y, px2.red, px2.green, px2.blue);
pixel px3(px2);
printf("pixel px3(px2);\npx2.x = %d, px2.y = %d, px2.red = %d, px2.green = %d, px2.blue = %d,\n\n", px2.x, px2.y, px2.red, px2.green, px2.blue);
cout << endl << "Do you want to exit loop (Y/N): ";
c = getch();
cout << endl << endl;
}
while(c != 'y' && c != 'Y');
return 0;
}
//---------------------------------------------------------------------------