Diskussion:C++-Programmierung: Entwurfsmuster: Singleton

Seiteninhalte werden in anderen Sprachen nicht unterstützt.
Aus Wikibooks

Stack-Variante und Referenzen[Bearbeiten]

Statt der bizarren Makro-Implementierung hätte ein deutlicher Verweis darauf, dass die "Stack"-Variante fast immer die beste ist, gut getan. (Die hat übrigens nichts mit dem Stack zu tun und heißt unter Fachleuten eher Meyers-Singleton.) Und warum geben die anderen Singletons Zeiger zurück? Und was macht die private CGuard-Klasse? Diese Seite sollte überarbeitet werden. (Den Rest des Wikibooks habe ich mir nicht angeguckt.) -- 85.183.220.115 21:37, 22. Aug. 2007 (Signatur nachgetragen von: Jürgen 10:28, 3. Nov. 2015 (CET))[Beantworten]

Deine "Stack Variante" ist keineswegs die "beste" weil sie Stack Overflows verursachen kann - und zwar ganz schnell und einfach, wer auf dem Stack operiert macht entweder alles falsch oder hat Aufgaben im Embedded-Bereich. In einer Hochsprache sollten NIEMALS Referenzen benutzt werden, das ist schlechter und vor allem LANGSAMER Code - ein Zeiger benötigt nur 32 oder 64 Bit Speicherplatz und kann mitunter sicher in der Handhabung sein (man sollte eben keinen Anfänger an das Projekt setzen ... Zeiger haben selbstverständlich einen Zusatzaufwand) - Referenzen benötigen jedoch n*2 an Speicherplatz - zwar liegt an der Speicherstelle der Referenz nur ein Verweis auf eine andere Speicherstelle jedoch ist dieser Verweis vollständig - sozusagen ein Hardlink, in einem Programm welches viele Objekte mit Referenzen erzeugt kann man so leicht den o.g. Fehler produzieren, das geschieht bereits ab ein paar hundert Objekten - welche bei Zeigern nicht auftreten; zwar ist es auch durchaus möglich den Heap vollaufen zu lassen jedoch merkt man das meist VOR dem Datenverlust, ggf. kann man noch intervenieren -- 92.75.152.56 12:33, 12. Okt. 2010 (Signatur nachgetragen von: Jürgen 10:28, 3. Nov. 2015 (CET))[Beantworten]
Also dass niemals Referenzen benutzt werden sollten habe ich noch nirgends gelesen (falls Du eine vernünftige Quelle hast würde mich das interessieren), im Gegenteil. Wenn irgend wie möglich sollten auf jeden Fall Referenzen benutzt werden (Siehe https://isocpp.org/wiki/faq/references#refs-vs-ptrs). Jeder halbwegs vernünftige C++-Compiler wird daraus wahrscheinlich keinen langsameren Code erzeugen als mit Zeigern, eher sogar schnelleren Code würde ich vermuten. Teilweise können Referenzen ja komplett weg optimiert werden, im schlimmsten Fall ersetzt sie der Compiler durch Zeiger und man hat gleich schnellen Code. --Versat 10:02, 3. Nov. 2015 (CET)[Beantworten]