Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
1

Виртуальное наследование и полиморфизм

02.03.2018, 09:00. Просмотров 1322. Ответов 5
Метки нет (Все метки)

Читая книгу столкнулся с такой типа такой, что полиморфизм это механизм в котором наследуются методы базового класса через указатель на базовый класс. Но тогда не пойму какая разница между полиморфизмом и виртуальным наследованием?! Ведь и там и там методы заведомо не известны и создаются в момент работы программы.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2018, 09:00
Ответы с готовыми решениями:

Виртуальное наследование
Ребят, кто - нибуть может на простом примере показать, накой нужно виртуальное наследование классов...

Виртуальное наследование
Образно говоря: Class A { private: ... public: virtual void f() {...} } class B1: virtual...

Виртуальное наследование
Здравствуйте, объясните как реализовано(внутри)под капотом виртуальное наследование? Например...

Виртуальное наследование
В данном коде возникает проблема при создании класса Man_Warrior,а именно при создании вызываются...

5
565 / 348 / 132
Регистрация: 15.09.2017
Сообщений: 1,230
02.03.2018, 09:25 2
Цитата Сообщение от Esso11 Посмотреть сообщение
какая разница между полиморфизмом и виртуальным наследованием?!
Наследование виртуальных функций, это и есть полиморфизм. Каждая такая функция может в своем производном классе иметь свою реализацию.
0
(80 / 20 || 50 / 50) = x
1602 / 1085 / 418
Регистрация: 16.08.2014
Сообщений: 4,562
Записей в блоге: 1
02.03.2018, 09:47 3
Esso11, виртуальное наследование это ромбовидное наследование, к полиморфизму не имеет отношения
0
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
02.03.2018, 14:58  [ТС] 4
_stanislav, Весьма уважаемый, то что виртуальное наследование - ромбовидное наследование это понятно, у меня вопрос всем разница, помимо того что отличается вызов их в main. Ведь что в полиморфизме, что в виртуальном наследовании реализация заведомо неизвестна. Работает условие динамического создания методов...
Возможно я не прав, будьте так любезны указать на мою ошибку.
0
565 / 348 / 132
Регистрация: 15.09.2017
Сообщений: 1,230
02.03.2018, 15:08 5
Esso11, Разница в том, что в виртуальном наследовании так же как и в обычном на один интерфейс одна реализация, а полиморфизм - это один интерфейс, различные методы. Т.е. полиморфизм - это одна функция может иметь различные реализации, в виртуальном наследовании этого нельзя сделать, можно только переопределить базовую функцию, но это уже не полиморфизм, это скрытие одной функции и подмена её другой:
C++
1
2
3
4
int a;
{
   int a;
}
Это не полиморфизм
Цитата Сообщение от Esso11 Посмотреть сообщение
что в виртуальном наследовании реализация заведомо неизвестна
Ну как не известна то? она известна во время компиляции, реализация в базовом классе.
1
5 / 5 / 0
Регистрация: 20.08.2017
Сообщений: 685
02.03.2018, 18:53  [ТС] 6
Avaddon74, прошу прощение сударь, я имел ввиду что до момента компиляции. спасибо за ваше разъяснение пришлось очень кстати!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.03.2018, 18:53

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Виртуальное наследование
Вопрос возник. Собственно, теоретически для чего используется виртуальное наследование я усвоил....

Не могу понять виртуальное наследование
Непонятны несколько моментов. Как строятся таблицы виртуальных классов? Есть базовый класс, У...

Виртуальное наследование (указатель на базовый класс)
У меня ромбическая иерархия классов, при попытке вызвать метод производного класса ошибка, что я не...

Может ли виртуальное наследование быть одиночным?
виртуальное наследование это множественное наследование, при котором нескольким классам, имеющим...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.