da ist etwas, das mich nervt.Statische lokale Variablen in Methoden eine schlechte Praxis?
In einem non-threaded-Programm, ist es besser, lokale statische Variablen (interne Methoden) oder statische Klassenmitglieder zu haben?
In diesem Beispiel:
class C{
public:
C(){};
void foo();
};
void C::foo(){
static int bar = 0;
bar++;
printf("%d\n",bar);
}
Ist es eine schlechte Praxis betrachtet, wenn bar
wird in C::foo()
allein verwendet werden?
Der Anfang Ihrer Antwort klingt vielversprechend, aber könnten Sie das ausarbeiten? –
@IIyan, die Semantik in seinem Code ist "print wie oft 'foo' wurde aufgerufen!". Nach dem, was man in seiner Frage sehen kann, hat dies nichts mit dem Zustand der Klasse zu tun, und so wäre es schlicht falsch, die Variable als statisches Klassenmitglied zu verwenden. Wenn jedoch "foo" ein Kopierkonstruktor wäre und "bar" würde "numberOfCopies" heißen, wäre es ein guter Kandidat für ein statisches Klassenmitglied.Es kommt darauf an, wie es benutzt wird. –