Odpověď na názor

Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.

  • 9. 5. 2012 14:50

    Kojot (neregistrovaný)

    C++ rozhraní nepodporuje, ale podporuje tzv. abstraktní třídy. Ty se řídí dědičností stejně jako neabstraktní. Dokonce lze bez problémů vytvořit abstraktní třídu jako potomka neabstraktní.

    class A {
    };
    class IA : public A {
    public:
    virtual void f() = 0;
    };
    class B : public IA {
    public:
    virtual void f() {}
    };

    To že se nahrazuje rozhraní pomocí abstraktních tříd je samozřejmě pravda, ale z toho samozřejmě vyplývají vlastnosti a omezení stejně jako pro neabstraktní třídy. Tedy pro diamant je nutné vždy použít virtuální dědičnost. Osobně jsem se tím setkal snad jen u C++ streamů. C++ nelze považovat za plně objektový jazyk. Není to jeho chyba, ale vlastnost.