These comments are in German, since it's a German book. (Though, surprisingly, this book got translated into English!)
Das Prinz-Buch ist ganz brauchbar beim Codieren von Zeile zu Zeile C++.
Ansonsten ist es nicht auf dem Stand von C++ und ein denkbar ungünstiges
Vorbild für objektorientierte Programmierung.
z.B.: p. 233, 227: Verwendung von "static", um ein Element modulglobal zu machen.
Gemäss [Stroustrup], p. 200: "In C and older C++ programs, the keyword
static is (confusingly) used to mean 'use internal linkage' (§B2.3)
Don't use static except inside functions (§7.1.2) and classes (§10.2.4)"
D.h. anstatt
static int gModulGlobal = 0;
soll gemäss Stroustrup
namespace { int gModulGlobal = 0; }
verwendet werden.
Ich habe meine Studierenden darauf hingewiesen, dass die Musterlösung
zur Aufgabe in Kapitel 26 gut als Gegenbeispiel für objektorientierte
Programmierung verwendet werden kann.
Siehe S. 606:
Im Kopierkonstruktor wird abhängig vom Typ des vorliegenden Elements Code
ausgeführt. Dies ist im allgemeinen ein Anzeichen dafür, dass die
Möglichkeiten des Polymorphismus nicht genutzt, sondern mühsam und
schlecht wartbar "von Hand" implementiert wurden.
Was passiert z.B. wenn ein neuer Cell-Typ eingeführt wird? Dann muss
wieder InhomList angepasst werden.
In diesem Sinne ist es auch keine gute Idee, dass die Klasse InhomList selber
die Cell-Objekte herstellt. Dann müssen wir nämlich für jeden
neuen Cell-Typ auch die InhomList-Klasse wieder anpassen.
Ich habe deshalb die doppelt geführten Methoden "insertAfter" und "insert"
entfernt und die Konstruktion der Cell-Objekte dem Client von InhomList
überlassen.
Auch die Cell-Hierarchie ist problematisch:
Cell<-BaseEl<-DerivedEl. Statt von einer konkreten Klasse abzuleiten
sollte eine gemeinsame abstrakte Oberklasse eingeführt werden.
Dazu z.B. [Meyers96], p. 168: "The way to say that two classes have
something in common is not to have one class inherit from the other, but to
have both of them inherit from a common base class." (detaillierter:
[Meyers95])
Das Buch verweist ausserdem auf kein einziges anderes Buch, und es
enthält auch keine Bibliographie. Sehr verdächtig.
Referenzen:
[Prinz] Peter Prinz et al: "C++ Lernen und professionell anwenden",
3. Auflage, mitp-Verlag, Bonn, 2005.
[Stroustrup] Bjarne Stroustrup: "The C++ Programming Language Special
3rd Edition)", Addison-Wesley Professional, 2000.
[Meyers95] Scott Meyers: "min, max, and more", C++ Report, Januar 1995.
Online: https://www.aristeia.com/Papers/C++ReportColumns/jan95.pdf
[Meyers96] Scott Meyers: "Effective C++ (1st edition, Eleventh printing, August 1996)"