русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Роздільне оголошення і визначення полів класу


Дата додавання: 2014-04-22; переглядів: 898.


Визначення статичних полів класу відбувається не так, як у звичайних полів. Звичайні поля оголошуються (компілятору повідомляється ім’я і тип поля) і визначаються (компілятор виділяє пам’ять для збереження поля) за допомогою одного оператора. Для статичних полів ці дві дії виконуються двома різними операторами: оголошення поля знаходиться всередині визначення класу, а визначення поля, як правило, розміщується поза класом і часто являє собою оголошення глобальної змінної.

static int count; //оголошення статичного поля

int foo:: count=0; //Визначення cтатичного поля

 

Для чого використовується така двоїста форма? Якби означення статичного поля знаходилося всередині класу, то це порушило б принцип, згідно з яким визначення класу не повинне бути зв’язаним з виділенням пам’яті. Помістивши визначення статичного поля поза класом, ми забезпечили однократне виділення пам’яті під це поле до того, як програма буде запущена на виконання і статичне поле в цьому випадку стане доступним всьому класу. Кожен об’єкт класу вже не буде володіти своїм власним екземпляром поля, як це повинне бути з полями автоматичного типу. В цьому сенсі статичні поля нагадують глобальні змінні.

Працюючи зі статичними даними класу, легко зробити помилки, які не розпізнаються компілятором. Якщо оголосити статичне поле класу, але забути його визначити, компілятор не видасть попередження. Програма вважатиметься коректною, доки редактор зв’язків не виявить помилки і не видасть повідомлення про те, що ми збиралися звернутися до неоголошеної глобальної змінної.

 


<== попередня лекція | наступна лекція ==>
Класи, об’єкти та пам’ять | Константні методи


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн