Финальный класс и функции финального члена - PullRequest
1 голос
/ 07 февраля 2020

Допустим, у меня есть базовый класс:

struct Base
{
    virtual void foo();
};

, а производный класс является окончательным struct A final : public Base. Имеет ли смысл также сделать функции-члены final? Я видел в нескольких местах, например,

struct A final : public Base {
    void foo() final;
}

Я не уверен, что в этом случае он предоставляет какое-либо значение, как если бы сам класс был final Я предполагаю, что все функции-члены по умолчанию final как хорошо. Я что-то пропустил? Есть ли рекомендации?

1 Ответ

2 голосов
/ 07 февраля 2020

Если структура или класс (A в вашем случае) равен final, вы не можете объявить другой, унаследовавший его. Следовательно, нет необходимости также объявлять какие-либо методы как final.

. Возможно, в некоторых местах это соглашение, чтобы было ясно, что этот метод также нельзя переопределить (просто как «напоминание» для * 1006). * структуры).

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