Я пытаюсь разобраться в полиморфизме и указателях и слежу за несколькими замечательными видео, объясняющими это (гиперссылка , если вам действительно все равно )
Он объявляет class A
и class B
, которые наследуются от A.
Но для создания экземпляра объекта B он делает так:
A* b = new B;
и он работает нормально (и он продолжает использовать этот метод при создании более сложных классов, векторного массива базового типа Shape, который содержит дочерние классы Square, Circle и т. Д., Т. Е.
std::vector<Shape*> shapes;
shapes.push_back(new Circle.........
shapes.push_back(new Rectangle.......
Возможно, но вполне нормально (и даже рекомендуется) объявить указатель на объект базового класса, но затем создать его экземпляр, указав на его дочерний класс ??
Полагаю, я только что ответил на свой вопрос: что дает возможность управлять коллекциями различных объектов, ссылаясь на них из родительского класса? Это правильно?
Спасибо!