Es gibt viele Orte in Boost, wo ich eine Vorlagenklasse sehe und kann nicht helfen, aber zu denken, warum die Person, die es schrieb, Vorlagen verwendete.Warum ist Boost so stark templated?
Zum Beispiel die Mutex-Klasse (n). Alle Mutex-Konzepte sind als Templates implementiert, bei denen man einfach einige Basisklassen oder abstrakte Klassen mit einer Schnittstelle erstellen kann, die dem Konzept entspricht.
bearbeiten nach Antworten: Ich dachte über die Kosten von virtuellen Funktionen nach, aber ist es nicht manchmal wert, sehr wenig Leistungseinbußen für besseres Verständnis zu verschenken? Ich meine manchmal (besonders mit Boost) ist es wirklich schwer zu templateten Code zu verstehen und Compiler-Fehler als Folge des Missbrauchs von Vorlagen zu entschlüsseln.
wäre eine gute Frage zu diesem Typ: http://stackoverflow.com/users/5597/anthony-williams (Autor von boost.thread): p –
Die Hauptphilosophie der C++ - Gemeinschaft ist, dass "Sie nur was bekommen Du fragst für". Das Boost-Projekt versucht genau wie die STL, dieser Philosophie zu folgen, indem alle Bibliotheken mit Hilfe von Vorlagen entworfen werden. Es gibt jedoch Kosten, wie Sie erwähnen: Verständnis leidet manchmal. Wenn Sie eine Bibliothek haben möchten, die Sie leichter verstehen können, sollten Sie sich vielleicht die Qt-Bibliothek ansehen. Es enthält viel von dem, was Boost tut, und mehr! Meiner Meinung nach erlaubt das Design von Qt eine groß angelegte C++ - Entwicklung, was Boost komplett fehlt. –