Доступ до статичних функцій
В приведеній програмі наявний статичний елемент даних з іменем total, що належить класу gamma. В цій змінній зберігається інформація про те, скільки об’єктів створено в класі. ЇЇ значення збільшується конструктором і зменшується деструктором.
Припустимо, що нам потрібно мати доступ до total, знаходячись поза класом. В лістінгу можна побачити функцію showtotal(), яка показує значення цієї змінної. Як одержати до неї доступ?
Якщо певний елемент даних оголошується статичним, на весь клас виділяється єдина копія цього елемента, при цьому неістотно, скільки об’єктів класу ми створили. Насправді може взагалі не бути ніяких об’єктів, але нам цікаво дізнатися навіть про цей факт. Можна створити об’єкт тільки для того, щоб мати можливість викликати потрібний метод, як в приведених далі рядках:
gamma dobj;
dobj.showtotal();
але це і негарно, і нераціонально. За правилами хорошого тону, не слід звертатися до об’єкта, якщо ми робимо що-небудь таке, що стосується класу в цілому. Доцільніше просто використати ім’я класу і оператор явного задання функції:
gamma::showtotal();
Тим не менше, такий прийом не спрацює, якщо showtotal() – звичайний метод. В цьому випадку дійсно доведеться написати ім’я об’єкту, крапку і назву функції. Якщо ж ми хочемо мати доступ до showtotal(), використовуючи тільки ім’я класу, оголосімо її статичною. В програмі 22.14 ми зробили це так:
static void showtotal()
Оголошена таким способом функція матиме доступ просто через ім’я класу.
Дата добавления: 2015-08-26; просмотров: 564;