Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.
S tím tak úplně nemůžu souhlasit. Mám matný dojem, že jsem to tady již někdy zmiňoval, ale C++ opravdu nepodporuje interfacy dobře. Respektive nepodporuje rozumně dědičnost interfaců:
class IA { virtual void f()=0; }
class IB : extends IA {}
class A : public IA { void f() {}; }
class B : public A, public IB {}
tak kompilátor zařve, že v B schází IA::f()
Samozřejmě, lze to ošetřit virtuálním děděním interfaců, jenže:
1) při větší hierarchii interfaců je to dost velká výkonnostní a paměťová ztráta
2) musím to řešit nikoli tam, kde problém vzniká (u objektu B), ale už u interfaců, což je v přímém rozporu s principy OOP a navíc někdy i špatně řešitelné (interfacy v cizí nemodifikovatelné knihovně apod.).
To nic nemění na tom, že C++ je krásnej jazyk :-)
PS: A nevím, kdes přišel na tom, že javascript je neobjektovej jazyk. Javascript je plně objektový jazyk, akorát beztřídní (to, že je objekt navíc funkcí? a co?).
PPS: Taky jsem nepochopil vícenásobnou dědičnost, Javu a diamanty, protože v Javě vícenásobná dědičnost není a mimo některé speciální konstrukty (např. konstanty) se tam s diamantem člověk snad co vím potkat nemůže. Nebo se pletu?
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 605×
Přečteno 27 722×
Přečteno 26 403×
Přečteno 24 367×
Přečteno 22 864×