Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.
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.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 611×
Přečteno 27 724×
Přečteno 26 404×
Přečteno 24 368×
Přečteno 22 865×