Если вы выполните следующие действия
vector<base*> bases;
Вы можете использовать полиморфизм на ваших объектах. Представьте, что у вас есть базовый класс с именем motorule. Он имеет метод перемещения(), чтобы перейти из точки А в точку Б.
class Vehicule
{
public:
virtual void move(){}
}
Тогда у вас есть два производных класса: автомобиль и подводная лодка
class Car : public Vehicule
{
public:
void move()
{
checktires();
drive();
}
}
И ваш класс Sub
class Submarine : public Vehicule
{
public:
void move()
{
submersion();
propulsion();
}
}
Поскольку метод перемещения является виртуальным, вы будете выполнять полиморфизм. Это механизм, который позволяет вам вызывать одну и ту же функцию, но иметь разные типы поведения, основанные на динамическом типе ваших объектов.
Я постараюсь объяснить это предложение как можно лучше. Теперь, когда у вас есть классы carule, Car и Submarine, вы создадите массив (или stl-контейнеры, такие как вектор) указателей транспортных средств.
std::vector<Vehicule*> objects;
objects.push_back(new Car());
objects.push_back(new Submarine());
objects[0]->move();
objects[1]->move();
Первый вызов для перемещения вызовет метод перемещения, определенный в методе Car. А второй вызовет движение, определенное в Submarine. Поскольку у вас может быть вектор vehicleule *, но когда вы вызываете функцию и потому что она виртуальна, вы вызываете соответствующую ее версию. И, вызывая только одну функцию, у вас разные поведения. Вы можете добавить столько производного класса, что вам нужно адаптировать метод перемещения.
Вам следует искать stackoverflow для полиморфизма, есть более подробные и точные ответы, которые я только что написал.
Извините за ошибки, я не являюсь носителем английского языка.
Что вы собираетесь делать, если кто-то добавляет новый производный тип? – PlasmaHH
добавление нового набора в класс A? в любом случае, вся функциональность должна исходить от базы, поэтому проблем не должно быть. Или ты имел в виду гетконтейнер? – German
Убедитесь, что вы понимаете разницу между временем компиляции и временем выполнения. –