Я знаю, что такое использование полиморфизма времени выполнения на объектно-ориентированном языке программирования. Например, базовый класс Superhero
был бы полезен для определения основных абстрактных свойств Superhero
, которые могут быть унаследованы и расширены в разных супергероях, например Batman
.Когда вам нужен указатель базового класса на объект производного класса в C++?
Я также знаю, что мы используем наследование, когда есть is-a
отношения, например, Superman
is-a
супергероя, и мы можем использовать указатель базового класса, чтобы указать на объект производного класса, например ...
Superhero *h = new Spiderman();
действительно.
Но я хочу знать, каковы обстоятельства, в которых мы должны были бы сделать что-то вроде этого, почему мы не можем просто использовать ...
Spiderman *s_man = new Spiderman()
Какую ситуацию или обстоятельства заставят нас использовать базу указатель класса для хранения объекта класса Child.
Я был бы благодарен, если кто-то может это разъяснить мне.
Напишите одну строку кода, чтобы «удалить» любой 'SuperHero *'. Этого должно быть достаточно, чтобы объяснить, почему «Супергероя * h» будет использоваться. – PaulMcKenzie
Вставьте пример открытия из любой книги OO здесь. – Barry
'Я знаю, что использовать полиморфизм времени выполнения на объектно-ориентированном языке программирования.« Я подозреваю, что вы этого не делаете. Полиморфизм времени выполнения (объектно-ориентированный) может быть достигнут только путем указания на производный объект с базовым указателем (или ссылкой). Когда вы знаете, для чего используется полиморфизм времени выполнения, ответ станет очевидным. – user2079303