Supposons que j'ai une fonction appelée périodiquement. La fonction obtient une valeur en tant que paramètre et je veux la comparer à la valeur qui a été reçue lors de l'appel de fonction précédent, c'est-à-dire. la valeur doit être mémorisée. Dois-je utiliser une variable statique non membre ou une variable membre non statique à cette fin? Quels sont les avantages et les inconvénients des deux approches?Utilisation de variables de membre statiques non membres et non statiques en C++
En tant qu'approche non membre statique que je veux dire quelque chose comme
class foo {
public:
void func(int value) {
static int lastValue;
if (value > lastValue) {
doSomething(value)
}
lastValue = value;
};
};
Et comme une variable membre non statique quelque chose comme
class foo {
private:
int lastValue_;
public:
void func(int value) {
if (value > lastValue_) {
doSomething(value)
}
lastValue_ = value;
};
};
si 'lastValue' est utilisé uniquement en fonction, je pense qu'il est raisonnable d'utiliser l'approche statique –
Oui, dans ce cas, il est utilisé que dans une seule fonction. – blomm444
@AlexeyAndronov Dans ce cas, toutes les instances de 'class foo' partageront la même' lastValue' via 'func()'. Alors qu'avec la variable membre non statique, chaque instance a sa propre memoisation. Cela peut ou non être requis ici, mais c'est une différence très importante à noter. –