Правила программирования на Си и Си++



         

133. Используйте счетчики экземпляров объектов для инициализации на уровне класса


Несколько разделов назад я рассматривал использование счетчика статических глобальных объектов для управления инициализациями на уровне библиотеки. В Си++ у нас есть лучшие варианты, потому что мы может использовать определение класса для ограничения области действия:

class window

{

   static int

num_windows;

public:

   window();

   ~window();

};

int window::num_windows = 0;

window::window()

{

   if( ++num_windows == 1 )  // только что создано первое окно

      initialize_video_system();

}

window::~window()

{

   if( --num_windows == 0 )      // только что уничтожено

      shut_down_video_system();  // последнее

окно

}

Наконец, счетчик экземпляров объектов может быть также использован в качестве счетчика числа вызовов для обеспечения инициализации на уровне подпрограммы:

f()

{

   static int

have_been_called = 0;

   if( !have_been_called )

   {

      have_been_called = 1;

      do_one_time_initializations();

   }

}




Содержание  Назад  Вперед