Ошибки, баги, вопросы - страница 1678
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
С помощью этого можно сделать аналог ключевого слова final, прямой запрет дальнейшего наследования.
Да вот как показывает пример выше, нельзя аналог сделать. Нужно final прописывать даже для private-методов.
Странно. для public наследования максимальный доступ должен быть protected а не private.
А в примере функция точно перегружается?
Странно. для public наследования максимальный доступ должен быть protected а не private.
А в примере функция точно перегружается?
Точно. Сам вот только узнал.
Если в примере сделать
BASE() {Func();} // вместо void Init() {Func();} Вызов Base.Init() - убрать конечно.
то можно проверить себя после запуска, правильно ли понимаете, что должно происходить.
В журнале терминала получаю
неуклюже лезу в указанное место исходника. Было бы удобно, чтобы из журнала по двойному щелчку на таком сообщении можно было сразу попасть на указанную строчку.
Если кто поддерживает - выскажитесь.
Классика же - интерфейс в базовом классе с переопределением в потомках:
Классика - это когда protected/public-виртуальные методы переопределяются. А вот для private - не так очевидно (в смысле применения). Спасибо, что ответили.
Да, я уже удалил свой пример, не видя вашего ответа, он действительно неудачным был.
Upd. Что-то я сам в азах запутался, пока вам отвечал. Всё правильно было в том примере, зря удалил. Ещё раз он же с примером использования:
Upd. Что-то я сам в азах запутался, пока вам отвечал. Всё правильно было в том примере, зря удалил. Ещё раз он же с примером использования:
Компилятор не делает двойку.
Не хороший пример, т.к. нигде не видно использование интерфейса CAnimal. Да еще двух потомков сделали public. Тему понимаю, так что норм.
Нормальный пример. Абстрактное животное в принципе какой-то звук издаёт, но неопределённый, поэтому у него метод Speak() вызывать нельзя, его можно вызвать только у животного конкретного вида. Поэтому в базовом классе объявляем закрытый виртуальный метод, а в потомках переопределяем его и открываем.
Нормальный пример. Абстрактное животное в принципе какой-то звук издаёт, но неопределённый, поэтому у него метод Speak() вызывать нельзя, его можно вызвать только у животного конкретного вида. Поэтому в базовом классе объявляем закрытый виртуальный метод, а в потомках переопределяем его и открываем.