Ru-MaNGOS

Ru-MaNGOS (http://mangos.ytdb.ru/index.php)
-   Флудильня (http://mangos.ytdb.ru/forumdisplay.php?f=30)
-   -   Overwrite function. (http://mangos.ytdb.ru/showthread.php?t=6273)

Den 06.10.2012 22:07

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 Второй вариант, я вообще первый раз увидел в мангосе. Не знаю как это называется. ))

Evgeniy 06.10.2012 23:06

Цитата:

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


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

PS Второй вариант, я вообще первый раз увидел в мангосе. Не знаю как это называется. ))

Насколько я понимаю С++:
Player - финальный класс, значит у него не будет потомков, способных перегружать функции, а значит не нужен virtual - а лишь override.
Хотя хз этот С++...у меня всегда с ним были проблемы.

LordJZ 07.10.2012 00:09

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


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

ru-mangos.ru - Русское сообщество MaNGOS