• Авторизация


Применение виртуальных функций и указателей на базовый класс для управления объектами 24-06-2009 16:21 к комментариям - к полной версии - понравилось!




Указатель на базовый класс , и использование виртуальных функций, могут сделать операции с объектами классов, порожденных от данного класса, однотипными. Это может быть удобно, когда над множеством объектов нужно произвести однотипные операции. Тут нужно понимать, что для каждого класса эти однотипные операции могут иметь свою специфику. Пример:
class Point
{
public:
 int x,y;
 Point (int nx, int ny):x(nx),y(ny) {}
 virtual void Show ()
 {
 cout<<"("<<x<<","<<y<<")"<<endl;
 }
 virtual void Move(int dx, int dy)
 {
 x+=dx;
 y+=dy;
 }
};
class Rectangle: public Point
{
public:
 int x1,y1;
 Rectangle (int nx,int ny,int nx1,int ny1):Point(nx,ny),x1(nx1),y1(ny1) {}
 virtual void Show ()
 {
 cout <<"("<<x<<","<<y<<")-("<<x1<<","<<y1<<")"<<endl;
 }
 virtual void Move(int dx, int dy)
 {
 x+=dx;
 y+=dy;
 x1+=dx;
 y1+=dy;
 }
};
class ColorRectangle: public Rectangle
{
public:
 int color;
 ColorRectangle (int nx, int ny, int nx1, int ny1,int ncolor):Rectangle(nx,ny,nx1,ny1),color(ncolor) {}
 virtual void Show()
 {
 cout<<"("<<x<<","<<y<<")-("<<x1<<","<<y1<<") "<<color<<endl;
 }
 virtual void Move(int dx,int dy)
 {
 x+=dx;
 y+=dy;
 x1+=dx;
 y1+=dy;
 color++;
 }
};
void main()
{
 Point *p[3];
 p[0]=new Point (100,100);
 p[1]=new Rectangle(150,150,200,200);
 p[2]=new ColorRectangle(300,300,400,400,0);
 for (int i=0;i<3;i++)
 p[i]->Show();
 for (int i=0;i<3;i++)
 p[i]->Move(10,10);
 for (int i=0;i<3;i++)
 p[i]->Show();
 for (int i=0;i<3;i++)
 delete p[i];
}
Обратите внимание на то, что однотипность операций достигается за счет того, что массив указателей имеет соответственно тип “Point”, а специфика работы с объектом каждого класса достигается за счет того, что функции Show() и Move() являются виртуальными.

 

вверх^ к полной версии понравилось! в evernote


Вы сейчас не можете прокомментировать это сообщение.

Дневник Применение виртуальных функций и указателей на базовый класс для управления объектами | TheLenka - Дневник Рыжей Девчонки | Лента друзей TheLenka / Полная версия Добавить в друзья Страницы: раньше»