class X : public Y ist böse -- concepts lite, gut?

Published: Wed 21 May 2014
By towi

In C++.

Hier wird argumentiert, dass in Java extends “böse” ist.

Während die Formel “ist böse” natürlich zu einfach ist, stimme ich der Argumentation jedoch zu und ich finde es schön begründet. Mal weniger theoretisch als auch schön an praktischen Beispielen.

In C++ entspricht das wohl dem, dass man besser type traits statt Vererbung verwendenden sollte. Ich sollte den Artikel mal versuchen, nach C++ zu übersetzen. Auf die Schnelle kann ich nur sagen, dass es ja in C++ keine wirklichen Interfaces gibt wie in Java, die man mit “implements” in seinen Klassen verwenden würde. In C++ ist es sehr wenig verbreitet mit puren “Signatur-Klassen” zu arbeiten (alle Methoden abstrakt, i.e. pure virtual). Daher kommt dem “implements” von Java in C++ der Weg über Typparameter von Templates am nächsten, i.e. type traits.

Aber eben nicht komplett, “implements” kann mehr – lesbare Fehlermeldungen zum Beispiel. Und unter anderem deshalb erwarten wir alle Concepts Lite

links

social