LINUX.ORG.RU

История изменений

Исправление 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.