- Каковы аргументы в пользу не указания ...
override
на деструкторы производного класса?
Существуют несовместимые компиляторы, которые не могут скомпилироваться, если для деструктора задано override
: https://msdn.microsoft.com/en-us/library/xfzxhe2a.aspx.
- Каковы аргументы в пользу не указания
virtual
... на деструкторы производного класса [когда он неявно виртуален]?
Чем меньше кода, тем лучше. Вы экономите 7 символов, не используя избыточные virtual
.
- Аргумент счетчика: 7 символов - не слишком большая экономия.
Возможно, будет принято проектное решение сделать ранее виртуальный деструктор не виртуальным для базового класса и всех его дочерних элементов. Если строго следовать этому руководству (не указывать избыточность virtual
), необходимо изменить только базу. В противном случае каждый дочерний элемент в иерархии должен быть изменен (или, по крайней мере, проверен, указывают ли они virtual
отдельно).
- Встречный аргумент: это может быть совершенно гипотетическая ситуация. Конечно, довольно редко.
- Как вы думаете, стоит ли мне больше склоняться к совету о лягушке или к руководству по основным рекомендациям C ++?
Единственный аргумент, который, по моему мнению, имеет существенный вес, - это несоответствие старых компиляторов Visual Studio, и поэтому я бы ошибался из-за того, что не использовал override
для деструкторов. В противном случае это очень мало значит, и вы можете следовать тому руководству, которое вы предпочитаете, или даже не беспокоиться о его соблюдении - последовательность не важна, когда под рукой нет разницы.