Ru-MaNGOS

Вернуться   Ru-MaNGOS > Флуд > Флудильня

Важная информация

Флудильня Разговоры на любые темы.

Мы устаем постоянно работать. Иногда надо где-то немного отдохнуть. Пожалуйста, не надо здесь устраивать бардак.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.10.2012, 22:07   #1
Den
Ученый
 
Регистрация: 10.03.2010
Адрес: Бобруйск
Сообщений: 284
Сказал(а) спасибо: 213
Поблагодарили 98 раз(а) в 84 сообщениях
Den Скоро придёт к известностиDen Скоро придёт к известности
По умолчанию Overwrite function.

Почему бы не использовать ключевое слово virtual в производных классах, если функция является виртуальной в базовом классе?

Код:
class Unit
{
    public:
        virtual void Cleanup();
};

А вот так, разве лучше ?

class Player : public Unit
{
    public:
        virtual void Cleanup();
};
Код:
class Unit
{
    public:
        virtual void Cleanup();
};

class Player : public Unit
{
    public:
        void Cleanup() override; // overwrite Unit::Cleanup();
};
Обьясните, с какой стороны это удобно.По мне так virtual void Cleanup(); смотрится куда лучше.

PS Второй вариант, я вообще первый раз увидел в мангосе. Не знаю как это называется. ))
Den вне форума   Ответить с цитированием
Старый 06.10.2012, 23:06   #2
Evgeniy
Пользователь
 
Регистрация: 06.01.2012
Сообщений: 98
Сказал(а) спасибо: 12
Поблагодарили 33 раз(а) в 21 сообщениях
Evgeniy На верном пути
По умолчанию

Цитата:
Сообщение от Den Посмотреть сообщение
Почему бы не использовать ключевое слово virtual в производных классах, если функция является виртуальной в базовом классе?


Обьясните, с какой стороны это удобно.По мне так virtual void Cleanup(); смотрится куда лучше.

PS Второй вариант, я вообще первый раз увидел в мангосе. Не знаю как это называется. ))
Насколько я понимаю С++:
Player - финальный класс, значит у него не будет потомков, способных перегружать функции, а значит не нужен virtual - а лишь override.
Хотя хз этот С++...у меня всегда с ним были проблемы.
Evgeniy вне форума   Ответить с цитированием
Старый 07.10.2012, 00:09   #3
LordJZ
Супер-модератор
 
Аватар для LordJZ
 
Регистрация: 07.03.2010
Сообщений: 647
Сказал(а) спасибо: 100
Поблагодарили 252 раз(а) в 123 сообщениях
LordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранитаLordJZ Как самоцвет среди гранита
По умолчанию

Это рекомендуемый способ оверрайда функции из С++11.
LordJZ вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[11970] Implement aura 24210 (overwrite for removed spell 24311 newsbot CMaNGOS Commits 0 20.04.2012 16:30
[11960] Implement custom overwrite for range of some spell effects newsbot CMaNGOS Commits 0 14.04.2012 02:13
[11478] Prevent overwrite main target at spell cast check for TARGET_PET newsbot CMaNGOS Commits 0 12.05.2011 21:10
[11257] Fix overwrite spells 33649 and 20572, other cases with same icon. newsbot CMaNGOS Commits 0 16.03.2011 02:40
[10335] Make sure DynamicObjectUpdater::VisitHelper does not overwrite existing PersistentAreaAura a newsbot CMaNGOS Commits 0 10.08.2010 06:11


Текущее время: 10:45. Часовой пояс GMT +3.


ru-mangos.ru - Русское сообщество MaNGOS
Главная цель проекта MaNGOS - обучающая, поэтому разрешается использовать исходный код и собранную программу только для образовательных целей.
Вы не можете использовать MaNGOS в коммерческих целях, а также не разрешается устанавливать публичные серверы на базе MaNGOS.
Любое копирование материалов, информации в любом виде без указания источника - форума Ru-MaNGOS будет считаться нарушением авторских прав и нарушением Уголовного Кодекса РФ, ст. 146 ст. 147.
Перевод vBulletin: zCarot