Для отладки я хотел бы добавить некоторые переменные-счетчики в мой класс. Но было бы неплохо сделать это, не изменяя заголовок, чтобы вызвать перекомпиляцию.Статическая переменная-член
Если Ive правильно понял ключевое слово, следующие два фрагмента будут совершенно идентичными. Предполагая, конечно, что существует только один случай.
class FooA
{
public:
FooA() : count(0) {}
~FooA() {}
void update()
{
++count;
}
private:
int count;
};
против
class FooB
{
public:
FooB() {}
~FooB() {}
void update()
{
static int count = 0;
++count;
}
};
В FooA, счет можно получить в любом месте в пределах класса, а также раздувает заголовок, так как переменная должна быть удалены, когда больше не нужны.
В FooB переменная видна только внутри одной функции, где она существует. Легко удалить позже. Единственным недостатком, о котором я могу думать, является тот факт, что счет FooB делится между всеми экземплярами класса, но это не проблема в моем случае.
- Правильное ли использование ключевого слова? Я предполагаю, что однажды count создан в FooB, он остается созданным и не переинициализирован до нуля для каждого вызова для обновления.
- Есть ли какие-либо другие оговорки или головной убор, о которых я должен знать?
Edit: После получения уведомления, что это приведет к возникновению проблем в многопоточных средах, я разъясняю, что мои кодовый является singlethreaded.
Почему вы добавляете его в пространство имен? И можете ли вы действительно добавить/удалить его по своему усмотрению? Если я удалю определение пространства имен там, не будет ли подсчет ++; ошибка причины строки? – Mizipzor