Unterschied Definition zur Initialisierung und Instanziierung
-
Hallo Leute,
gibt es einen Unterschied zwischen Definition und Initialisierung und wie passt Instantiierung rein?
Danke
-
Definition legt eine Variable an, Initialisierung setzt einen Anfangswert.
(Instanziierung hat damit weniger zu tun - das ist die Bildung von "echtem" Code aus einem Template)
-
Eine Definition verbraucht immer Speicher. Eine Variable oder Funktion zum Beispiel. (Code verbraucht auch Speicher!)
Die Initialisierung gibt es nur bei Variablen.
Die Instanzierung wird vom Compiler vorgenommen, wenn bei einem Template ein Typ eingesetzt wird.Beispiele:
extern int a; // Deklaration void b(); // Deklaration int c; // Deklaration + Definition void d() {} // Deklaration + Definition int e = 5; // Deklaration + Definition + Initialisierung std::vector<int> f; // Deklaration + Definition + Initialisierung (Default Konstruktor) + Instanzierung
-
CStoll schrieb:
Definition legt eine Variable an
Ich dachte dass ist die Deklaration?!
Danke schomal für deine Antwort.
-
peter012 schrieb:
CStoll schrieb:
Definition legt eine Variable an
Ich dachte dass ist die Deklaration?!
Nein, eine Deklaration wird nur der Name der Variablen bekannt gemacht.
-
peter012 schrieb:
Ich dachte dass ist die Deklaration?!
Nein. Die erklärt nur die Eigenschaften des Bezeichners.
-
Super jetzt wird es hier heller. Danke.
Aber was ist das?
void b(); // Deklaration void d() {} // Deklaration + Definition
Was soll man mit einer void variable anfangen können?
Was wird in d Definitiert? *konfus*
-
Das sind Funktionen...
-
Das erste ist die Deklaration einer Funktion, das zweite die Definition einer solchen.
-
CStoll schrieb:
(Instanziierung hat damit weniger zu tun - das ist die Bildung von "echtem" Code aus einem Template)
Oder auch die Initialisierung einer (Klassen-)Instanz.
-
void-Variablen sind in der Tat reichlich sinnlos (und afaik auch nicht gestattet), aber dort hast du void-Funktionen (in anderen Sprachen auch als "Prozedur" bezeichnet).
PS: Und deine Funktion d() macht gar nichts.
-
314159265358979 schrieb:
Das erste ist die Deklaration einer Funktion, das zweite die Definition einer solchen.
Ups... Natürlich was sonst... bin wohl blind.
Danke an alle.