русс | укр

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

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


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


Доступ до статичних функцій


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


В приведеній програмі наявний статичний елемент даних з іменем total, що належить класу gamma. В цій змінній зберігається інформація про те, скільки об’єктів створено в класі. ЇЇ значення збільшується конструктором і зменшується деструктором.

Припустимо, що нам потрібно мати доступ до total, знаходячись поза класом. В лістінгу можна побачити функцію showtotal(), яка показує значення цієї змінної. Як одержати до неї доступ?

Якщо певний елемент даних оголошується статичним, на весь клас виділяється єдина копія цього елемента, при цьому неістотно, скільки об’єктів класу ми створили. Насправді може взагалі не бути ніяких об’єктів, але нам цікаво дізнатися навіть про цей факт. Можна створити об’єкт тільки для того, щоб мати можливість викликати потрібний метод, як в приведених далі рядках:

gamma dobj;

dobj.showtotal();

але це і негарно, і нераціонально. За правилами хорошого тону, не слід звертатися до об’єкта, якщо ми робимо що-небудь таке, що стосується класу в цілому. Доцільніше просто використати ім’я класу і оператор явного задання функції:

gamma::showtotal();

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

Static void showtotal()

Оголошена таким способом функція матиме доступ просто через ім’я класу.

 

Нумерація об’єктів

В клас gamma ми помістили ще одну функцію, призначену для виведення ідентифікаційних номерів його об’єктів. Ці ID рівні змінній total в момент створення об’єкта, так що номер кожного об’єкту виявляється унікальним. Функція showid() виводить ID свого об’єкта.

 


<== попередня лекція | наступна лекція ==>
Дружні класи | Деструктори


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