logo search
шпоры по ООП

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

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