initialwert von member variablen mit standard-datentyp
-
wuerde mich freuen falls jemand folgendes bestaetigen / widersprechen koennte:
member variablen einer klasse mit standard-datentypen (int, short, long, char) haben (ohne explizite zuweisung) initial den wert 0.
stimmt das ?
danke.
mfg
-
Nö. Wenn du sie nicht initialisierst, haben sie einen zufälligen Wert.
class X { public: int i; }; int main() { X x; std::cout << x.i; }Automatisch initialisiert werden nur Typen mit Konstruktoren, oder globale oder statische Variablen. char, int, etc. haben dann den Wert 0, ja.
Warum man das so macht? Ganz einfach:while (...) { char buf[0x1000]; // Uninitialisiert memcpy(buf, ...); // Was aber egal ist, da man eh überschreibt. }Wäre das nicht so, hätte man hier quasi ein ständiges memset, was u.U. zu starken Performanceunterschieden führen kann.
-
pepe75 schrieb:
member variablen einer klasse mit standard-datentypen (int, short, long, char) haben (ohne explizite zuweisung) initial den wert 0.
stimmt das ?
Wenn's globale oder static funktionslokale Variablen sind, ja, sonst nein.
-
volkard schrieb:
pepe75 schrieb:
member variablen einer klasse mit standard-datentypen (int, short, long, char) haben (ohne explizite zuweisung) initial den wert 0.
stimmt das ?
Wenn's globale oder static funktionslokale Variablen sind, ja, sonst nein.
Eine globale oder static funktionslokale Membervariable. Soso.
Will sehen
-
hustbaer schrieb:
volkard schrieb:
pepe75 schrieb:
member variablen einer klasse mit standard-datentypen (int, short, long, char) haben (ohne explizite zuweisung) initial den wert 0.
stimmt das ?
Wenn's globale oder static funktionslokale Variablen sind, ja, sonst nein.
Eine globale oder static funktionslokale Membervariable. Soso.
Will sehen
https://ideone.com/KJauo#view_edit_box
Edit: Das ist Schwachsinn.