7 / 7 / 3
Регистрация: 04.06.2015
Сообщений: 189
|
|
1 | |
Базовый виртуальный класс06.03.2018, 15:38. Показов 1021. Ответов 9
Метки нет (Все метки)
Подскажите пожалуйста зачем нужен базовый виртуальный класс, если я могу в наследники описать все эти функции. Так и так придется это делать. Тогда зачем нужно чисто виртуальный класс? Я наверно еще чего-то не знаю
0
|
06.03.2018, 15:38 | |
Ответы с готовыми решениями:
9
Виртуальный базовый класс typeid определяет тип указателя на базовый класс, как тип "базовый класс". Вне зависимости от присвоенного ему значения Базовый класс Complex и производный класс для реализации квадратных матриц Класс: как обратиться к методу производного класса через итератор на базовый класс? |
2708 / 862 / 326
Регистрация: 10.02.2018
Сообщений: 2,042
|
||||||
06.03.2018, 16:06 | 2 | |||||
Это очень полезная вещь)
Вы же говорите про "pure virtual" классы?
0
|
7 / 7 / 3
Регистрация: 04.06.2015
Сообщений: 189
|
|
06.03.2018, 16:25 [ТС] | 3 |
Наверно не про них. Видел очень много примеров когда создают BaseClass и там все функции виртуальные, а потом наследуют от этого класса и переопределяют функции. Зачем так делать, если можно сразу определить класс с функциями?
0
|
2708 / 862 / 326
Регистрация: 10.02.2018
Сообщений: 2,042
|
|
06.03.2018, 16:49 | 4 |
Наверное для того, что бы можно было сделать несколько разных классов наследованных от одного базового и использовать объекты всех этих классов по однотипному базовому указателю. Или логика примеров, которые вы смотрели, просто требовала подобного. Сложно сказать определённо, не зная точно, что за примеры вы смотрели. Класс состоящий только из виртуальных функций - это частный случай полиморфизма. Получается, что вы спрашиваете о смысле полиморфизма и зачем он нужен.
0
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
06.03.2018, 17:00 | 5 |
Дан базовый класс "Солдат", с методом "родить бутылку водки". Дан производный класс "Солдат Петров", в котором определено как он будет бутылку рожать. Теперь, нам надо получить бутылку.
Без виртуальных методов: поймать объект "Солдат Петров", отправить за водкой. Если Петрова под рукой нет, тады ой. Отправлять Иванова за водкой мы не умеем. С виртуальными методами: поймать объект "Солдат" и отправить за водкой. Петров, Иванов, нас не колышит. Нам водка нужна, а не фамилия.
0
|
7 / 7 / 3
Регистрация: 04.06.2015
Сообщений: 189
|
|
06.03.2018, 18:15 [ТС] | 7 |
Еще больше запутался
0
|
Форумчанин
8216 / 5046 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
|
|
06.03.2018, 18:20 | 8 |
Sierra26, для полиморфизма. Мы вызываем виртуальные функции по указателю базового класса. А реализация зависит от класса, который хранится по этому указателю. А чисто виртуальными мы функции можем делать для того, чтобы требовать собственную реализацию в обязательном порядке (чисто виртуальные функции тоже могут иметь реализацию).
Необходимо понять код вектор указателей абстрактного класса
1
|
"C with Classes"
|
||||||
06.03.2018, 18:22 | 9 | |||||
Sierra26,
1
|
7 / 7 / 3
Регистрация: 04.06.2015
Сообщений: 189
|
|
06.03.2018, 23:27 [ТС] | 10 |
Спасибо большое всем. Буду потихоньку вникать. Что-то уже приснилось.
0
|
06.03.2018, 23:27 | |
06.03.2018, 23:27 | |
Помогаю со студенческими работами здесь
10
Создать базовый класс Car (машина) и производный класс Lorry (грузовик): ООП ошибки Создать базовый класс - Array и производный класс - Money для работы денежной суммы Класс: Создать абстрактный базовый класс Figure с виртуальными методами вычисления площади и периметра. Указатели в базовом классе на базовый класс и производный класс Реализовать базовый класс Человек и класс-наследник Студент Создать базовый класс Polygon и производный класс Triangle Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |