История изменений
Исправление x0r, (текущая версия) :
именно.
книжный пример: есть базовый класс Vehicle и его подклассы Car, Truck, Bike. есть виртуальный метод Vehicle::go() который переопределен во всех подклассах. есть std::list<Vehicle*> list, в который напихали, в перемешку, указатели на Car, Truck, Bike:
list.insert(new Car());
list.insert(new Truck());
list.insert(new Bike());
теперь можно пройтись по всем элементам списка, вызывая на них go(). при этом повызыватся методы подклассов:
for (auto v: list) v->go();
это, в кратце, все, что нужно знать о полиморфизме на крестах. далее имеет смысл почитать про pure virtual methods и vtable.
Исходная версия x0r, :
именно.
книжный пример: есть базовый класс Vehicle и его подклассы Car, Truck, Bike. есть виртуальній метод Vehicle::go() который переопределен во всех подклассах. есть std::list<Vehicle*> list, в который напихали, в перемешку, указатели на Car, Truck, Bike:
list.insert(new Car());
list.insert(new Truck());
list.insert(new Bike());
теперь можно пройтись по всем элементам списка, вызывая на них go(). при этом повызыватся методы подклассов:
for (auto v: list) v->go();
это, в кратце, все, что нужно знать о полиморфизме на крестах. далее имеет смысл почитать про pure virtual methods и vtable.