Предположим, что у меня есть функция, которая вызывается периодически. Функция получает значение как параметр, и я хочу сравнить его со значением, полученным во время более раннего вызова функции, т. Е. значение нужно запомнить. Должен ли я использовать статическую не-членную переменную или нестационарную переменную-член для этой цели? Каковы преимущества и недостатки обоих подходов?Использование статических не-членных и нестатических переменных-членов в C++
В статическом подходе, не являющегося членом, я имею в виду что-то вроде
class foo {
public:
void func(int value) {
static int lastValue;
if (value > lastValue) {
doSomething(value)
}
lastValue = value;
};
};
И как нестатической член переменной что-то вроде
class foo {
private:
int lastValue_;
public:
void func(int value) {
if (value > lastValue_) {
doSomething(value)
}
lastValue_ = value;
};
};
если 'lastValue' используется только в функции я думаю, что это разумно использовать статический подход –
Да, в этом случае используется только в одной функции. – blomm444
@AlexeyAndronov В этом случае все экземпляры 'class foo' будут использовать один и тот же' lastValue' через 'func() '. В то время как с нестатической переменной-членом каждый экземпляр имеет свою собственную memoisation. Это может быть или не потребоваться здесь, но это очень важная разница. –