Предположим, что мы пишем программу для изображения фигур на экране. Общие атрибуты фигуры представлены классом 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
8 8 8
|