Пример программы с наследованием классов
Иерархия наследования
Point <- Circle; Виртуальные функции.
(Пример из книги: Дейтел.Программирование на С++)
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <conio.h>
class Point{ int x; int y; public: int putx(); int puty(); virtual void show(); void move(int, int); private: virtual void hide(); public: Point(int, int); Point(); }; int Point::putx(){ return x; } int Point::puty(){ return y; } void Point::show(){ putpixel(x,y,getcolor()); } void Point::hide(){ putpixel(x,y,getbkcolor()); } void Point::move(int xn,int yn){ hide(); x=xn; y=yn; show(); } Point::Point(int x1, int y1){ x=x1; y=y1; } Point::Point(){ x=0; y=0; public: } |
class Circle: public Point{
public:
int radius;
int vis;
Circle(int,int,int);
~Circle();
void show();
void hide();
void move(int,int);
void vary(int);
int putradius();
};
Circle::Circle(int xc,int yc,int radc=0): Point(xc,yc){
radius=radc;
vis=1;
}
void Circle::hide(){
unsigned int col;
if(vis==0)return;
col=getcolor();
setcolor(getbkcolor());
circle(x,y,radius);
vis=0;
setcolor(col);
}
void Circle::show(){
circle(x,y,radius);
vis=1;
}
/*
void Circle::move(int xn,int yn) {
hide();
x=xn;
y=yn;
show();
}
*/
void Circle:: vary(int d){
hide();
radius+=d;
if(radius<0)radius=0;
show();
}
int Circle::putradius(){
return radius;
}
Circle::~Circle(){
hide();
}
};
//Главная программа
void main() {
int a=DETECT,b;
initgraph(&a,&b,"C:\\BC\\BGI");
Point p0;
Point p1(100,100);
Point p2(105,105);
setcolor(YELLOW);
p0.show();
p1.show();
p2.show();
getchar();
p2.move(200,200);
Circle A(150,250,30);
Circle B(300,100,50);
cout<<"A.x="<<A.putx() <<endl<<"A.y="<<A.puty()<<endl;
cout<<"radius="<<A.putradius();
getch();
setcolor(RED);
B.show();
setcolor(BLUE);
A.show();
getch();
A.move(300,300);
B.vary(20);
getch();
A.vary(120);
getch();
A.Circle::~Circle();
B.Circle::~Circle();
getch();
closegraph();
}
Оставить комментарий