Виртуальные функции

<!--StartFragment -->

Предположим, что мы пишем программу для изображения фигур на экране. Общие атрибуты фигуры представлены классом shape, а специальные атрибуты - специальными классами:


class shape {
point center;
color col;
//...
public:
void move(point to) { center=to; draw(); }
point where() { return center; }
virual void draw();
virtual void rotate(int);
//...
};


Функции, которые можно определить не зная точно определенной фигуры (например, move и where, то есть, \"передвинуть\" и \"где\"), можно описать как обычно. Остальные функции описываются как virual, то есть такие, которые должны определяться в производном классе.

Например:


class circle: public shape {
int radius;
public:
void draw();
void rotatte(int i) {}
//...
};


Теперь, если shape_vec - вектор фигур, то можно написать:

for (int i = 0; i



Опубликовал admin
23 Мар, Вторник 2004г.



Программирование для чайников.