ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 6) онлайн
Раздельное объявление и определение полей класса
Определение статических полей класса происходит не так, как для обычных по- лей. Обычные поля объявляются (компилятору сообщается имя и тип поля) и определяются (компилятор выделяет память для хранения поля) при помощи одного оператора. Для статических полей эти два действия выполняются двумя разными операторами: объявление поля находится внутри определения класса, а определение поля, как правило, располагается вне класса и зачастую представ- ляет собой определение глобальной переменной.
Для чего используется такая двойственная форма? Если бы определение стати- ческого поля класса находилось внутри класса (как и предполагалось в ранних версиях C++), то это нарушило бы принцип, в соответствии с которым определе- ние класса не должно быть связано с выделением памяти. Поместив определение статического поля вне класса, мы обеспечили однократное выделение памяти под это поле до того, как программа будет запущена на выполнение и статиче-
ское поле в этом случае станет доступным всему классу. Каждый объект класса уже не будет обладать своим собственным экземпляром поля, как это должно быть с полями автоматического типа. В этом отношении можно усмотреть ана- логию статического поля класса с глобальными переменными.
Object1 Object2 Object3

Работая со статическими данными класса, легко совершить ошибки, которые компилятор будет не в силах распознать. Если вы объявите статическое поле класса, но забудете его определить, компилятор не выдаст предупреждающего сообщения. Ваша программа будет считаться корректной до тех пор, пока ре- дактор связей не обнаружит ошибку и не выдаст сообщение о том, что вы пы- таетесь обратиться к необъявленной глобальной переменной. Это произойдет в том случае, если вы забудете указать имя класса при объявлении, например foo:: в программе STATDATA.
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
Схожі підручники
- Методичні вказівки до виконання практичного заняття на тему «Графічний метод розв’язку задач НЛП» Розв’язати графічним методом задачу НЛП
- Соціальна педагогіка (частина 1)
- Фактори сталого розвитку
- Хрестоматія з Філософії (частина 2) (онлайн)
- Структура кредитного портфелю українських банків, недоліки та перспективи покращення
- Лекції з Філософії (частина 1)
