Корректная инициализация
От: Аноним  
Дата: 15.09.02 09:58
Оценка:
Рассмотрим для примера такую задачу.
Имеется класс, для которого мы хотим иметь глобальный счетчик объектов этого класса. Простейшее решение очевидно:

struct T  
  {
  static int count;

  T() { count++; }
  ~T() { count--; }
  }

int T::count = 0;     // вот это (или аналогичный вариант со статической
                      // функцией-инициализатором) мне не нравится


но при этом мы должны "руками" установить начальное значение счетчика... что мне не нравится... ну и аналогичных ситуаций можно много придумать.

Вопрос: как можно организовать инициализацию статических членов класса, чтобы это не требовало явных действий человека, им пользующегося. Вот в Java вроде как можно при объявлении написать static int count = 0; и все ок...

Где-то читал, что все статические переменные и члены класса изначально инициализируются нулями. Эксперимент с доступными компиляторами это вроде подтверждает. Но, как я понимаю, это не оговорено стандартом и пользоваться этим нехорошо. Как быть?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.