0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
|
|
1 | |
Виртуальные функции04.12.2010, 21:31. Показов 1580. Ответов 11
Метки нет Все метки)
(
Объясните, для чего необходимы виртуальные функции. Где их рационально использовать.
P.S. Если есть ссылки на толковые материалы - не жалейте. Заранее благодарен.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
|
|
04.12.2010, 21:31 | |
Ответы с готовыми решениями:
11
Виртуальные и чисто виртуальные функции виртуальные функции
Виртуальные функции |
9 / 9 / 1
Регистрация: 25.10.2009
Сообщений: 152
|
|
04.12.2010, 22:13 | 2 |
Обычно виртуальные функции используются при наследовании. в родительском классе объявляют какую-либо функцию виртуальной, и тогда при вызове этой функции для объектов наследников будет использоваться одноимённая функция только уже не из родительского класса, а из самого наследника. если в родительском классе есть хоть одна виртуальная функция, то деструктор обязательно нужно объявлять тоже как виртуальный...
вот, что-то типа этого))
1
|
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
|
|
04.12.2010, 23:11 [ТС] | 3 |
А что-нибудь про объекты?
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
04.12.2010, 23:19 | 4 |
Класс является логической абстракцией, описанием нового типа переменной, а объект - его физическая сущность
1
|
0 / 0 / 0
Регистрация: 01.10.2010
Сообщений: 50
|
|
04.12.2010, 23:35 [ТС] | 5 |
0
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
04.12.2010, 23:44 | 6 |
возьми лучше книгу например Г. Шилдта почитай для начала на рус торренте есть там четко описаны для чего они надо.
а так по каплях могу сказать виртуальные ф-ции поддерживают динамический полиформизм в то время когда перегрузка ф-ций/операторов статический полиформизм, в случае виртуальных ф-ций: во время выполнения определяется ф-ция для конкретного объекта, то есть если у нас есть класс А и Б, Б производный от А и в А есть виртуальная ф-ция, в Б имеется ее перегруженная версия, то если во время выполнения объект Б есть активным - используется его виртуальная ф-ция, А - активный, используется виртуальная ф-ция А. При наследовании виртуальные ф-ции базового класса должны быть преопределены в производном классе, так же есть понятие чисто виртуальных ф-ций, но не буду забивать тебе голову лучше книгу почитай и сам попробуй разобрать Насчет статического полиформизма - ф-ция определяется на этапе компиляции
1
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
05.12.2010, 00:25 | 7 |
Отнюдь. Это верно только для чисто-виртуальных функций и только в том случае, если нужно, чтобы производный класс не был абстрактным.
1
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
05.12.2010, 00:41 | 8 |
вообще да, но виртуальная ф-ция которая не переопределена в производном теряет свой "виртуальный" смысл
собственно зачем нужна вирт. ф-ция, которая делает одно и то же
1
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
05.12.2010, 00:44 | 9 |
norge_goth, А как насчет иерархии классов? В одном производном нужна, а в другом нет. Сомнительно конечно, но мало-ли что бывает.
2
|
62 / 62 / 13
Регистрация: 27.01.2009
Сообщений: 279
|
|
05.12.2010, 00:51 | 10 |
1
|
2018 / 1617 / 489
Регистрация: 31.05.2009
Сообщений: 3,005
|
||||||
05.12.2010, 01:21 | 11 | |||||
![]() Решение
Об этом написано в любой книге по C++. Простейший пример
![]()
3
|
В астрале
![]() 8048 / 4805 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
05.12.2010, 01:26 | 12 |
rangerx, Да, конечно. Я понимаю это. Но, ведь в конкретной задаче, нам может не понадобиться использовать пингвинов и др. нелетающих птиц, а только тех которые летают, и тогда проектирование класса будет вполне корректно. Ну это все конечно спорные вопросы. Правила хорошего тона говорят, что это не корректно, а реальность и постановка задачи говорит другое... Как-то так.
Ну а если все птицы - то разбить на два класса получается: летающие птицы, нелетающие птицы. Или просто в базовом не писать виртуальный метод fly.
1
|
05.12.2010, 01:26 | |
Помогаю со студенческими работами здесь
12
Виртуальные функции
виртуальные функции Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |