Я должен указать виртуальный на методах подклассов также?

require(dplyr) 
df %>% 
group_by(FlightID) %>% 
arrange(FareClassRank) %>%
mutate(ratio=FareValue/lead(FareValue)) 
26
задан ereOn 12 June 2014 в 06:58
поделиться

3 ответа

Нет, технически вам не нужно указывать virtual. Если базовый метод является виртуальным, то C ++ автоматически сделает соответствующий метод переопределения virtual.

Однако вы должны пометить их virtual. В конце концов, этот метод virtual, и он делает ваш код намного понятнее и проще для других разработчиков.

33
ответ дан JaredPar 28 November 2019 в 07:10
поделиться

Вам это не нужно , но пометка этого может сделать ваш код более понятным.

Примечание: если в вашем базовом классе есть виртуальный деструктор, то ваш деструктор автоматически становится виртуальным. Вам может понадобиться явный деструктор по другим причинам, но нет необходимости переопределять деструктор, просто чтобы убедиться, что он виртуальный. Независимо от того, объявляете ли вы это с помощью виртуального ключевого слова, объявляете ли вы его без виртуального ключевого слова или не объявляете его вообще, оно все равно является виртуальным.

8
ответ дан JRL 28 November 2019 в 07:10
поделиться

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

Основным следствием является то, что без указания виртуального в дочернем элементе сложнее понять из определения дочернего класса, что этот метод фактически является виртуальным. По этой причине я всегда указываю виртуальный в родительских и дочерних классах.

7
ответ дан Mark B 28 November 2019 в 07:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: