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 😉


Anmelden zum Antworten