Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/89: Рейтинг темы: голосов - 89, средняя оценка - 4.85
9 / 9 / 0
Регистрация: 07.10.2011
Сообщений: 187

Чем отличается override от virtual?

22.12.2015, 16:40. Показов 18547. Ответов 76
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Так и не понял.
Если указать метод как override, то он переопределит метод базового класса
Для этого метод базового класса должен быть virtual?
Но virtual методы и без этого переопределяются, разве не так?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.12.2015, 16:40
Ответы с готовыми решениями:

Virtual и override
Доброго времени суток, может кто обьяснить мне зачем использовать virtual и ovveride если и без них все работает: using System; ...

Зачем использовать virtual и override?
Зачем использовать virtual и override, если и без них все замечательно работает, например: class First { public virtual string ...

Зачем нужен virtual и override
Подскажите пожалуйста, вот пример №1: class Vader { public string Fok() { return...

76
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
22.12.2015, 23:48
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Tulosba Посмотреть сообщение
Вот про auto хороший пример
чем? то что примеру более 15 лет?
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
22.12.2015, 23:51
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
чем? то что примеру более 15 лет?
До 11-ого стандарта auto было старого образца. Так что примеру лет эдак 5 всего.
Ну тогда вот Вам другой, не имеющий срока давности.
C++
1
2
void foo();//Фу, ленивый шарпей
extern void foo();//Во, наш чувак! Реально приплюснутый.
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.12.2015, 23:54
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
то что примеру более 15 лет?
Откуда ты 15-то взял? auto только с C++11 смысл поменяло. 4 года всего.
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.12.2015, 00:01
Цитата Сообщение от Tulosba Посмотреть сообщение
Откуда ты 15-то взял?
По моему мнение лет так 15 компиляторам наплевать на это было (с++98 до с++11)
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
23.12.2015, 00:04
Цитата Сообщение от Tulosba Посмотреть сообщение
истинный архаичный плюсист!
Не, истинные архаичные плюсисты на Си пишут и не парятся. Единственно, свою сишню почему-то упорно в этот раздел пихают.
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2015, 00:12
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
По моему мнение лет так 15 компиляторам наплевать на это было (с++98 до с++11)
Причем здесь наплевать? Стековые переменные являются автоматическими. Так что они auto по-умолчанию.
А раз auto подразумевается по дефолту, то и auto писать не нужно.
Так вопрос, если override подразумевает virtual, то нафига писать virtual?

Добавлено через 53 секунды
Цитата Сообщение от Mr.X Посмотреть сообщение
Единственно, свою сишню почему-то упорно в этот раздел пихают.
потому что большинство студентов этого и хотят.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
23.12.2015, 00:43
Ну давайте я что-ли приведу вам выдержку из C++ Core Guidelines, которую активно пилят Саттер, Страуструп и иже с ними. Сама выдержка, по коммиту вижу, авторством Саттера.
Readability. Detection of mistakes. Writing explicit virtual, override, or final is self-documenting and enables the compiler to catch mismatch of types and/or names between base and derived classes. However, writing more than one of these three is both redundant and a potential source of errors.

Use virtual only when declaring a new virtual function. Use override only when declaring an overrider. Use final only when declaring an final overrider.

Enforcement

Compare names in base and derived classes and flag uses of the same name that does not override.
Flag overrides with neither override nor final.
Flag function declarations that use more than one of virtual, override, and final.
Выделения от меня.

Ну тут как бы все логично, и я с ним согласен. Лучше например иметь четко или virtual, или override, чем всегда иметь virtual и фиг знать, не забыли ли тут еще и override.
5
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
23.12.2015, 00:48
Цитата Сообщение от Croessmah Посмотреть сообщение
потому что большинство студентов этого и хотят.
Ну так пусть и пишут в сишный раздел сишникам, этот-то при чем?
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.12.2015, 01:01
ct0r, ссылку?
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
23.12.2015, 01:03
Цитата Сообщение от rikimaru2013 Посмотреть сообщение
ссылку?
https://github.com/isocpp/CppC... delines.md
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.12.2015, 07:36
Цитата Сообщение от Croessmah Посмотреть сообщение
Стековые переменные являются автоматическими.
скорее автоматические являются стековыми
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2015, 13:15
Kastaneda, как по мне, то стековые являются автоматическими
Block-scope variables explicitly declared register or not explicitly declared static or extern have automatic storage duration.
0
 Аватар для Kastaneda
5232 / 3205 / 362
Регистрация: 12.12.2009
Сообщений: 8,143
Записей в блоге: 2
23.12.2015, 13:28
Croessmah,
have automatic storage duration
это лишь означает, что они будут созданы/разрушены автоматически при входе/выходе в/из области видимости. И так получилось, что на x86 автоматические переменные лежат на стеке. Но размещение переменной на стеке не говорит о том, что она автоматическая.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
23.12.2015, 13:39
Цитата Сообщение от Croessmah Посмотреть сообщение
Стековые переменные являются автоматическими.
Цитата Сообщение от Kastaneda Посмотреть сообщение
скорее автоматические являются стековыми
Ну в общем случае ни то, ни то, разве нет?
Автоматические - это про время.
Стековые - это про место.
Если я пишу бэкенд под какую-то архитектуру, то я могу извращаться как хочу
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2015, 13:50
Цитата Сообщение от Kastaneda Посмотреть сообщение
это лишь означает, что они будут созданы/разрушены автоматически при входе/выходе в/из области видимости.
ну вот, то бишь стековые переменные частный случай автоматических
Цитата Сообщение от ct0r Посмотреть сообщение
Если я пишу бэкенд под какую-то архитектуру, то я могу извращаться как хочу
Извращаться то все могут
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.12.2015, 14:00
Цитата Сообщение от Croessmah Посмотреть сообщение
Извращаться то все могут
Для кого извращение, а для кого и норма

Добавлено через 1 минуту
Цитата Сообщение от ct0r Посмотреть сообщение
Ну тут как бы все логично, и я с ним согласен.
Но не с инициализацией констант в лямбде, да?
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
23.12.2015, 14:12
Официальный термин - автоматическая память, однако Страуструп пишет, что ее еще называют "памятью в стеке", т.е. термин из операционных систем используется как жаргонный.
Таким образом, выражение
Цитата Сообщение от Croessmah Посмотреть сообщение
Стековые переменные являются автоматическими
является тавтологией.
0
Игогошка!
 Аватар для ct0r
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
23.12.2015, 14:51
Цитата Сообщение от Tulosba Посмотреть сообщение
Но не с инициализацией констант в лямбде, да?
Про это не сам Саттер писал, во-первых А во-вторых, я не говорил, что против инициализации констант в лямбде. Я против сложной логики в этой инициализации. В этом гайде кстати написано, что подразумевается сложность уровня moderate - то есть умеренная, небольшая, здравая.
0
9 / 9 / 0
Регистрация: 07.10.2011
Сообщений: 187
23.12.2015, 15:45  [ТС]
Я вот вас почитал, и ещё больше запутался
т.е. методы переопределяются и без virtual? (если забыть про override)
0
Неэпический
 Аватар для Croessmah
18149 / 10731 / 2067
Регистрация: 27.09.2012
Сообщений: 27,035
Записей в блоге: 1
23.12.2015, 15:48
Fangod, если в базовом классе функция-член виртуальна, то в наследнике она тоже будет виртуальна, даже если писать без virtual и без override.
C++
1
2
3
4
5
6
7
8
9
struct X
{
   virtual void foo() {} 
};
 
class Y
{
  void foo() {} //Тоже виртуальная
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2015, 15:48
Помогаю со студенческими работами здесь

Обязательно ли описывать функцию с override, если в базовом классе уже есть метод с virtual?
Здравствуйте, хотел узнать обязательно ли описывать функцию с override если к примеру в базовом классе уже есть метод с virtual? Ведь без...

В чем разница между new и override?
разница между new и override?

В чем разница между new и override?
Цитирую с msdn: Для чего нужно вообще использовать new? поведение методов одно и то же что и при override. Или мой код слишком...

В чем различие применение модификатора override и new?
Добрый день ! Подскажите в чем различие применение модификатора override и new ? virtual String ^ToString() new; virtual...

Чем отличается =- от -=
Только подробно опишите пожалуйста,у меня из-за этого программа в циклах не правильно считает


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru