int neu deklariert?
-
Hallo Zusammen,
Ich hab da mal 'ne bescheidene Frage (ich führ direkt mal den Quelltext an):#include <iostream> using namespace std; class func { public: func(); int count(); private: int i; }; func::func() { i=0; } int func::count() { static int i; return i++; } extern func counter;
Ist jetzt mein "static int i" in "int func::count()" neu deklariert und definiert? Oder wird dem i aus der Klasse nur noch static zugewiesen?
Weil ich dachte, dass das "int i" in der Klassen-Deklaration gilt Klassenweit!?
Oh Gott, ich hoffe, ich hab die Frage verständlich gestellt!Danke schon mal im Voraus
Nike
-
Das i in der Funktion verdeckt die Membervariable i, die aber trotzdem weiter existiert. Falls func noch mehr Memberfunktionen hätte, würden die alle das i in der Klasse sehen.
-
das i in func::count ist vollkommen unabhängig von dem i in func.
du kannst dir das i aus func ja immer ausgeben lassen:void func::print () { cout << i << '\n'; } //... func f; cout << f.count() << '\n'; f.print(); cout << f.count() << '\n'; f.print();
dann siehst du den unterschied.
-
Ja, ich hab mir mit "cout<<&i<<endl;" die Adressen angeguckt, die waren unterschiedlich. Dann kann ich mir die Membervariable auch schenken!
Danke nochmal
Nike