Одессит
|
|||||||||||
1 | |||||||||||
Создание полиморфного объекта, зачем создавать указатель на объект базового класса?25.07.2014, 18:08. Показов 5596. Ответов 19
Метки нет Все метки)
(
Зачем создавать указатель на объект базового класса:
0
|
|
25.07.2014, 18:08 | |
Ответы с готовыми решениями:
19
Указатель на объект базового класса и адрес объекта производного класса Указатель на объект базового класса
Возможно ли указатель производного класса инициализировать объектом базового класса? |
Одессит
|
|
25.07.2014, 18:38 [ТС] | 4 |
Во всех примерах про полиморфизм объект создаётся как в первом примере. Я пробовал играться с виртуальными функциями классов. Ничего не меняется, от того как я создаю объекты.
Но судя по разным статьям про полиморфизм, создавать полиморфные объекты нужно как в первом случае. Вот цитата одной из статьи:
0
|
5496 / 4891 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
25.07.2014, 18:57 | 5 |
Естественно. Если иначе, то как полиморфизм демонстрировать?
В каком смысле ничего?
Добавлено через 3 минуты Если указатель базового класса связан с объектом производного, то, при использовании виртуальных методов, через этот указатель, будут вызываться методы производного класса. Если этот указатель связан с объектом базового, то, через этот указатель, будут вызываться методы базового класса. Добавлено через 2 минуты Это и есть полиморфизм. Чтобы его увидеть в работе, естественно, нужно создавать указатель базового класса, связанный, в одном случае, с объектом производного класса, в другом случае - с объектом базового. Добавлено через 5 минут Если же тип указателя и объекта, с которым он связан, совпадают, то какой тут может быть полиморфизм? Всё будет работать, как обычно, что с виртуальными методами, что без них.
1
|
Master of Orion
![]() |
|
25.07.2014, 19:00 | 7 |
kylroma, что так создаете, что эдак, разницы особой нет. Вопрос в функциях, которые работают с этими объектами. Чем более общий тип они могут обрабатывать, тем больше от них проку.
0
|
Одессит
|
||||||
25.07.2014, 19:01 [ТС] | 8 | |||||
Вот пример. Если уберу virtual от метода print(), то объекты b и bb реагируют одинаково.
0
|
17417 / 9250 / 2263
Регистрация: 30.01.2014
Сообщений: 16,196
|
|
25.07.2014, 19:10 | 9 |
До тех пор пока рассуждаешь в терминах А и Б ничего и не поймешь. Нужно задачу хотя бы приближенную к реальности рассмотреть. А и Б подходят тогда, когда один разбирающийся человек расказывает другому разбирающемуся человеку свою идею. А если ты новичок, то не нужны тебе никакие А и Б.
![]() В общем посмотри вот тут, я пытался человеку объяснить на конкретном примере.
2
|
Master of Orion
![]() |
||||||
25.07.2014, 19:10 | 10 | |||||
чтоб можно было общую функцию писать для всех типов (криво, но плюсы для меня немного чужды
![]()
1
|
25.07.2014, 19:20 | 12 |
Как говорилось в одной рекламе: "Зачем спрашивать "Зачем"? Если вы не собираетесь вызывать функции Derived, разницы по большому счёту никакой.
А давайте такой вопрос. А если вы не знаете, какой тип вам конкретно вернут?
0
|
Master of Orion
![]() |
|
25.07.2014, 19:26 | 15 |
kylroma, в общем, не используйте объекты базового типа
![]() ![]()
0
|
5496 / 4891 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|
25.07.2014, 19:39 | 20 |
0
|
25.07.2014, 19:39 | |
Помогаю со студенческими работами здесь
20
Как сложить объект базового класса с объектом производного(наследуемого класса)
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |