jak zablokować możliwość redefinicji funkcji w klasach potomnych?

0

Witam
Czy jest jakiś sposób inny niż poniżej by jak ktoś poda w potomnej klasie definicję funkcji fun2 to by się kod nie skompilował?
'virtual fun2() final' wydaje się że jest rozwiązaniem ale pytanie czy to poprawne jest rozwiązanie w takim sensie logicznym, być może jest jeszcze bardziej poprawniejsze, np. jak sobie radzono z tym przed C++11?

class Klasa
{ 
    public:
    virtual ~Klasa() = default;
    void fun2() {} ; //dla 'virtual void fun2() final' działa, będzie błąd kompilacji jak w Klasie2 fun2 zdefiniowana
};

class Klasa2: public Klasa
{ 
    public:
    void fun2() { std::cout << "test" << std::endl;};
};
1

AFAIK nie da się inaczej, definiowanie metody o tej samej nazwie może być wyłapane przez kompilator jako warning, ale to tyle.

1 użytkowników online, w tym zalogowanych: 0, gości: 1