|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
|
Виртуальные функции и перегрузка методов, в чем разница?26.01.2019, 17:57. Показов 9336. Ответов 5
Метки нет (Все метки)
привет
к сожалению могу уже уловить мысль, все в куче в голове. объясните пожалуйста в чем отличие виртуальной функции от перегрузки метода?
0
|
|
| 26.01.2019, 17:57 | |
|
Ответы с готовыми решениями:
5
В чем разница построения отчета по разным схемам, физические таблицы и виртуальные В чем разница лямбда-выражений и анонимных методов? В чём разница при использовании разных методов? |
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
|
| 26.01.2019, 18:31 | |
|
Наследование - позволяет строить новые определения классов на основе определений существующих классов.
Функции, которые производные классы должны определять самостоятельно, базовый класс определяет как virtual. Вызовы виртуальной ф-и распознаются во время выполнения. Вызывается та ф-я, которая соответствует динамическому типу объекта. Производный класс указывает класс(-ы), который он намеревается унаследовать. Для этого используется список наследования класса, после двоеточия. Можно запретить переопределение с использования спецификатора final. Новый стандарт позволяет производному класс явно указать что ф-я-член предназначена для override (переопределения) унаследованной виртуальной ф-и. Динамическое связывание позволяет взаимозаменяемо использовать тот же код для обработки объектов как типа Родительского, так и Дочернего. Базовые классы обычно должны определять виртуальный деструктор. Виртуальные деструкторы необходимы, даже если они не делают ничего. Если производный класс не переопределяет виртуальную ф-ю своего базового класса, то производный класс наследует версию, определенную в его базовом классе.
1
|
|
|
223 / 150 / 79
Регистрация: 14.03.2016
Сообщений: 459
|
||||||
| 26.01.2019, 18:32 | ||||||
|
Виртуальные методы методы нужны в том случае, когда через указатель базового класса, который указывает на дочерний класс, вызывается некоторый метод. Очень часто, для понимания что же это такое, приводят следующий пример:
допустим у вас есть класс "работник" у него есть виртуальный метод "работать" и обычный "попить чай", у этого класса есть дочерние классы такие как "менеджер", "программист" и "тимлид" (но использовать будем только первый). У этих трех классов так же есть свой переопределенный метод "работать" и "попить чай". Имеем объект "начальник" типа "работник", т.к. от класса "работник", коим и является "начальник", унаследованы остальные три класса то он может хранить в себе ссылку на дочерний класс. Если "начальник" ссылается на объект класса "менеджер" и вызывает метод "работать", то будет вызван метод именно "менеджера", а не "начальника". Однако, если "начальник" все так же ссылается на объект класса "менеджер" и вызывает метод "попить чай", которые, как мы помним, не является виртуальным, то "пить чай" идет начальник, а не объект класса "менеджер". Вот как это выглядит в коде:
2
|
||||||
|
531 / 272 / 220
Регистрация: 14.11.2016
Сообщений: 1,052
|
|
| 26.01.2019, 18:37 | |
|
А перегрузка это, когда например тебе нужно сделать ф-ю, которая в зависимости от надобности могла бы принимать разные параметры, для этого определяют несколько одноименных ф-й - методов, но с разным набором параметров. Тоже самое, что и перегрузка обычных ф-й.
1
|
|
|
443 / 74 / 7
Регистрация: 29.01.2018
Сообщений: 1,274
|
||||||
| 27.01.2019, 17:48 [ТС] | ||||||
|
ребята,можно еще вопрос?
зачем в обобщенных классах делать так?
0
|
||||||
|
"C with Classes"
|
|||||||
| 27.01.2019, 17:57 | |||||||
|
pcmax, так делают для того что бы явно сказать компилятору какой тип нужно вывести из параметров, дабы исключить стандартные привидения аргументов.
<int> избыточна.
2
|
|||||||
| 27.01.2019, 17:57 | |
|
Помогаю со студенческими работами здесь
6
Передача параметров во виртуальные функции, перегрузка Полиморфизм, виртуальные функции, перегрузка функций Виртуальные функции, таблицы виртуальных методов, как они работают? Процедуры и функции. Перегрузка функций (методов) и операторов
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
|
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма).
На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
|
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ *
Дана цепь(не выше 3-го порядка) постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по
1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения. . .
|
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита. . .
|
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|