Hallo!
Kann mir wer den Unterschied zuwischen
- Eine Variable instanzieren,
- Eine Variable initialisieren und
- Eine Variable deklarieren
erklären?
Was ist richtig, was ist schön?
mfg Huzi
Hallo!
Kann mir wer den Unterschied zuwischen
erklären?
Was ist richtig, was ist schön?
mfg Huzi
ZitatDer unterschied zwischen instanzieren und initialisieren besteht zwischen Objekt und simplem datentyp?
Nicht ganz..
deklarieren: du legst eine Variable von einem bestimmten Datentyp an. Der Speicher wird allokiert, aber die Variable hat noch keinen bestimmten Wert. Das können auch Objekte sein.
instanziieren: Gilt nur für Objekte. Du legst eine Variable vom Typ des Objekts an. Diese Variable ist eine Instanz der KLASSE "wasauchimmer". Der Speicher wird allokiert und die member-Variablen der Instanz werden meist auch schon initialisiert, weil beim instanziieren ein Konstruktor der Klasse aufgerufen wird.
initialisieren: Der Speicher muss allokiert sein und die Variable bekommt einen Wert.
In einer etwas abstrakteren Sichtweise:
Beim Deklarieren (C++: "Person p;") wird vereinbart, dass "p" nachfolgend als Variablenname verfügbar und vom (statischen) Typ "Person" ist.
Beim Instanzieren (C++: "Person* p = new Person();") wird für eine Variable Speicherplatz angefordert.
Beim Initialisieren wird einer Variable erstmals ein Wert zugewiesen.
"int i" kann übrigens ein Beispiel für alle drei Begriffe sein. Kommt drauf an, in welcher Sprache man sich befindet. In C++ wird ein "int i" nicht automatisch initialisiert, in Java aber schon (mit 0). In beiden Sprachen wird Speicherplatz in der Größe eines int angefordert. Eine Deklaration ist es auch in beiden Sprachen.
Zitat von Paulchen
Ja, aber damit meint er nur daß DU die Variable noch nicht initialisiert hast. Und daß du gefälligst "= 0" hinschreiben sollst wenn du die Variable auf 0 initialisiert haben willst.
Das Problem in deinem Beispiel: Lokale Variablen werden nicht initialisiert. Ich meinte aber ganz gewöhnliche "klassenweite" Variablen, also etwa:
i wird mit 0 initialisiert. Ein Boolean mit false, ein Objekt mit null usw.
EDIT: null, nicht 0 für Objekte. Danke, Swoncen!
Zitat von sauzachn
ein Objekt mit NULL nicht mit 0.
Dankeschön für die Antworten...
Jetzt blick ich da ein Bisserl durch...
Zitat von huziDankeschön für die Antworten...Jetzt blick ich da ein Bisserl durch...
Vieles was hier gepostet wurde ist falsch. Bezueglich Initialisierung muss In C++ zwischen lokalen, dynamischen und nicht-lokalen Variablen bzw. Objekten unterschieden werden; NULL stammt aus C-Tagen, in C++ fuehrt 0 zu weniger Problemen. Default-Initializer in C++ ist 0 (des entsprechenden Typs) usw.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!