классе?
Везде писать не нужно. В наследниках принято писать override/final
Я везде пишу, это наглядно. А override появился в С++11, поэтому не во всей кодовой базе доступен (да, что то ещё нужно собирать в С++03)
так а зачем везде то писать? что значит это наглядно?
Я понимаю, что если вызываю этот метод, может вызваться не та реализация, которую я вижу, а что-то из наследников.
C++03? Ну давайте тогда уж отвечать на все вопросы, имея в виду C++98 на всякий случай - вдруг у кого-то кодовая база ещё на нём.
Можно ещё ANSI C++ вспомнить
С++11 это новый С++98 Сейчас большинство кодовой базы на нём, я уверен
https://www.jetbrains.com/lp/devecosystem-2021/cpp/ C++98/03 всего 12% Пора уже забыть о нём и двигаться вперёд
короче, я так понял, что когда ты каждый раз пишешь, ты не думаешь о том, указал ли ты виртуал в базовом классе, а видишь это и в классах наследниках?
Я советую указывать virtual/override для методов и в наследниках в том числе: так можно будет предотвратить отстрел конечностей в случае, когда кто-то меняет интерфейс методов в одном из базовых классов. Предупреждаю как человек, однажды случайно создавший данный косяк когда-то в момент разработки, а обнаруживший его за день-два до релиза.
Можно не писать в наследниках...
Обсуждают сегодня