V
Wutz schrieb:
Gora1000 schrieb:
Ich weiß wie ich Zeiger, Variablen bzw. Referenzen deklarieren und initialisieren muss.
Wirklich?
Zunächst mal solltest du den Unterschied zw. deklarieren und definieren kennen und verstehen. Den kennst du nämlich definitiv nicht.
Gora1000 schrieb:
Was ich immer noch nicht verstehe, wann benutze ich was davon und welche Vorteile hat das eine gegeüber dem anderen.
Referenz-Objekte müssen immer initialisiert werden, Zeiger nicht, d.h. Zeiger können auf irgendwelchen Unsinn verweisen, Referenzen nicht; es ist sicher leicht einzusehen, dass dies ein enormer Vorteil für sicheren Programmcode ist
Außerdem sind Referenzen dazu geschaffen worden, C++ Leute mit mangelndem Zeigerverständnis einen halbwegs einfacheren Ersatz anzubieten. C++ Leute haben nämlich erfahrungsgemäß nur nebulöse Vorstellungen, wer oder was Zeiger sind und wie man sie sinnvoll einsetzt, deshalb:
- benutzte Referenzen statt Zeiger immer wo es möglich ist (außer z.B. beim Einbinden originärer C-Libs)
- verwende außer static_cast keine anderen Casts (und schon gar keine C-Casts)
Gora1000 schrieb:
Zum Beipiel warum sollte man die Variablen einer Klasse als Zeiger deklarieren und nicht als normale Variablen.
Niemals. Lies mal was über RAII.
Klasse *kzeiger = new Klasse;
Ist totaler Schwachsinn, und noch viel größerer Unsinn ist, dass C++ sowas überhaupt erlaubt.
Gora1000 schrieb:
Oder warum benutzt man an bestimmten Stellen im Code Referenzen anstatt von Zeigern.
Weil Referenzen (s.o.) handlicher für ungeübte Programmierer sind und vor allem weil sie nicht uninitialisiert sein können (außer man castet hier irgendwelchen Müll zusammen) und somit nicht wie Zeiger auf Unsinn verweisen können und es bei Dereferenzierung somit per se nicht knallen kann.
@Gora: Sowas hatte ich befürchtet. Eine echt halbgare Antwort, die Dich weiter zurückwirft, als Dich weiterzubringen.
Kauf am besten ein gutes C++-Buch.