static oder Membervariable?



  • Hallo,

    wenn ich eine Methode Foo::methode() habe, in der ich eine Variable bar brauche, deren Wert beim erneuten Aufruf von methode() wieder verhanden sein muss und ich bar wirklich NUR in methode() brauche:
    Mache ich dann bar als static local oder doch lieber als Membervariable? Membervariable ist schöner (static locals sind irgendwie hässlich), aber da ich die Variable nur in Foo::methode() brauche, wäre vielleicht static local besser. Was meint ihr?



  • würde ich auch als lokale statische variable machen. aber was hast du denn in etwa vor?

    bei statischen dingen werd ich immer leicht stutzig...



  • Es kommt darauf an, ob du mehrere Instanzen von foo erstellst oder nicht.
    Wenn du mehrere Instanzen erstellst und bar static lokal definierst,
    so arbeiten alle Instanzen mit dem gleichen bar.
    Ist bar aber eine Membervariable von foo, so hat jede Instanz ihr eigenes unabhängiges bar.

    Hast du nur eine Instanz von foo, so ist es in gewisser Weise Geschmackssache.
    Du solltest aber bedenken, dass die Lebensdauer einer lokalen statischen Variable in etwa der des Programmes entspricht, während die Lebensdauer der Membervariablen an die des Objekts gebunden ist.
    Ist lokales statisches bar z.B. ein Objekt, welches im Konstruktor sehr viel Speicher alloziiert und im Destruktor freigibt, so würde dieser Speicher zwar erst bei dem ersten Aufruf deiner Methode angefordert, freigegeben würde der Speicher aber erst am Ende des Programmes wieder.

    Das muss nicht schlimm sein, aber man sollte es mit in Betracht ziehen, bevor man mit statischen Variablen herumbastelt.
    Der Effekt kann ja auch gewollt sein.


Anmelden zum Antworten