Должен ли виртуальный быть по умолчанию или окончательным по умолчанию? - PullRequest
0 голосов
/ 05 июля 2018

Виртуальные ли функции по умолчанию нарушают закрытие для модификации? Являются ли функции, являющиеся окончательными по умолчанию, нарушающими открытое расширение?

Должны ли функции быть конечными по умолчанию, если реализовано множественное наследование?

Как насчет занятий? Должны ли они быть виртуальными по умолчанию или окончательными по умолчанию?

Или финальный и виртуальный должны быть явными? (То есть вынудить кодировщика объявлять все функции или классы как окончательные или виртуальные, как, например, в большинстве языков нет возвращаемого типа по умолчанию.) Поскольку явный лучше, чем неявный.

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

1 Ответ

0 голосов
/ 09 июля 2018

Установка классов как виртуальных по умолчанию подразумевает более тесную связь между кодом, поскольку наследование приветствуется, но состав и интерфейс по сравнению с наследованием, следовательно, наследование не рекомендуется, поэтому, по моему мнению, классы должны быть окончательными по умолчанию. Как и в случае с функциями, они, будучи виртуальными по умолчанию, не только нарушают закрытие для модификации, но и поощряют наследование, что подразумевает более тесную связь между кодом.

Можно явно указать их, но это просто добавляет избыточность вашему коду.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...