1404 / 646 / 135
Регистрация: 11.08.2011
Сообщений: 2,299
Записей в блоге: 2
1

Инициализация статических объектов без конструктора

01.10.2014, 01:14. Показов 1301. Ответов 2
Метки нет (Все метки)

Цитата Сообщение от Страуструпа
C++
1
2
3
4
5
6
7
8
9
10
11
class Zlib 
{ 
         static bool initialized; 
         static void initialize () {initialized = true; } 
     public: 
         // конструктор отсутствует 
         void f() 
         { 
            if (initialized == false) initialize (); 
          } 
};
Если многие функции потребуют проверки флага первого использования, то стратегия станет утомительной, но все же по-прежнему работоспособной. Она опирается на тот факт, что статические объекты без конструкторов инициализируются нулевыми значениями.
Что-то я как ни вертел этот код, он у меня не заработал. Как я понял, смысл в том что не надо определять initialized, хотя без этого программа не линкуется.
Как по-логике должен выглядеть работающий код?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2014, 01:14
Ответы с готовыми решениями:

Инициализация с помощью конструктора без параметров. Почему не нужны скобки?
Доброго времени суток форумчане. Такой вопрос , почему в конструкторе без параметров не нужно...

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

Инициализация статических членов класса
Непонятно, почему статические члены класса нельзя инициализировать при помощи вот такого...

Инициализация вещественных статических константных полей класса С++
static const double x=2.15; //c double и float не инициализирует. Почему??

2
19 / 19 / 14
Регистрация: 23.09.2014
Сообщений: 117
01.10.2014, 02:15 2
Вне класса:
C++
1
bool Zlib::initialized = бла-бла-бла;
1
5489 / 4884 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
01.10.2014, 06:53 3
Цитата Сообщение от Dani Посмотреть сообщение
Как я понял, смысл в том что не надо определять initialized, хотя без этого программа не линкуется.
Определять всегда нужно. Можно не инициализировать (инициализируется нулём):
C++
1
bool Zlib::initialized;
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.10.2014, 06:53
Помогаю со студенческими работами здесь

Инициализация в объявлении константных статических (const static) членов-данных класса.
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static...

Инициализация конструктора по умолчанию
почему если инициализировать поля класса в конструкторе по умолчанию так: MyClass::MyClass() {...

Инициализация конструктора класса
инициализация конструктора класса Rectangle::Rectangle(int w, int h): itsWidth(w),...

Инициализация конструктора базового класса
class animal { public: animal(int a):ianimal(a){} protected: int ianimal; }; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru