68944

Статичні функції-члени

Лекция

Информатика, кибернетика и программирование

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

Украинкский

2014-09-27

28 KB

0 чел.

Лекція № 6

Тема: Статичні функції-члени

Функції-члени також можуть бути статичними, але на них розповсюджується декілька обмежень. Вони мають прямий доступ тільки до інших статичних членів класу. (Зрозуміло, глобальні функції і дані також доступні статичним функціям-членам.) Статична функція-член не має покажчика this. Одна і та ж функція не може одночасно мати статична і нестатична версії. Статичні функції не можуть бути віртуальними. І на закінчення, статичні функції не можна оголошувати за допомогою ключових слів const або volatile.

Розглянемо злегка змінену версію програми, що надає один і той же ресурс різним об'єктам. Звернете увагу на те, що функцію get_reeource () можна викликати як незалежно від об'єкту, використовуючи ім'я класу і оператора дозволу області видимості, так і через об'єкт.

#include <iostream>

using namespace std;

class cl {

static  int resource;

public:

static  int get_resource() ;

void free_resource()   {  resource =  0;   }

};

int cl::resource;   //  Визначення ресурсу.

int cl::get_resource() {

if(resource)   return  0;   //   Ресурс  зайнятий.

else   {

resource = 1;

return 1;  // Ресурс наданий даному об'єкту.

}

}

int main() {

cl obi, ob2;

/* Функція get_resource() є статичною

тому її можна викликати незалежно від об'єкту. */ if(cl::get_resource()) cout << "Об'єкт obi володіє ресурсом\n";

if(!cl::get_resource()) cout << "Об'єкту оЬ2 доступ запрещен\n";

obi.free_resource() ;

if(ob2.get_resource()) // can still call using object syntax

cout « "Тепер об'єкт оЬ2 може використовувати ресурс\n";

return 0;

}

Статичні функції-члени мають обмежений круг додатків, проте вони бувають корисні для попередньої ініціалізації закритих статичних змінних-членів до створення реальних об'єктів. Наприклад, наступна програма абсолютно вірна.

#include <iostream>

using namespace std;

class static_type {

static int i;

public:

static void init(int x) {i = x;}

void show() {cout « i;}

};

int static_type::i; // визначуваний змінну i

int main() {

// Ініціалізували статичні дані перед створенням об'єкту

static_type::init(100);

static_type х;

x.show(); // Відображається число 100

return 0;

}


 

А также другие работы, которые могут Вас заинтересовать

55316. Формування мовно-літературної грамотності учнів 228 KB
  Основні завдання: Зміцнення статусу української мови як державної; Створення достатньої організаційної кадрової науковометодичної матеріальнотехнічної бази для забезпечення оптимальної ефективності процесу вивчення української мови та літератури з метою...
55317. Перші князі Київської держави 27 KB
  Назвіть імена київських князів про яких ви вивчали у молодших класах Учні згадують імена перших київських князів учитель записує їх на дошці в порядку їх правління. Перші князі були вільні духом благородні мужні кращі люди часів Київської Русі.
55318. ПІРАМІДОЛОГІЯ 4.75 MB
  Поспілкувавшись з учнями що вони знають про піраміди чи вивчали в школі на уроках історії щось цікаве хто знає про існування сучасних пірамід де вони зустрічаються нам в оточуючому нас світі легко і ненавязливо викладач підводить учнів до плану дій і розподіл ролей.
55319. ПРОФОРИЕНТАЦИЯ В РАБОТЕ КЛАССНОГО РУКОВОДИТЕЛЯ 72.5 KB
  Цель моей работы: помочь учащимся ориентироваться в огромном мире профессий; оказывать консультационную помощь в выборе любимого дела; показать неразрывную связь между желаемой профессией и необходимым образованием...
55320. Дружба – найбільший скарб 225 KB
  Напишіть на ньому побажання та добрі слова своїм друзям. Тема: Якщо ви ввічливі Мета: навчити дітей ввічливо спілкуватися з ровесниками та дорослими; розширити і закріпити вміння вживати слова ввічливості; домагатися доброзичливої атмосфери в класі; виховувати в учнів ввічливість чемність доброзичливість; формувати манери культурної поведінки поглибити знання учнів про етикет і його важливість у житті людини. Але чи то уклін чи слова вітання чи лагідна усмішка спільним в них є те що привітання означає: Ти мені приємна...
55321. Олімпійський вогник 47 KB
  Мета проекту Ознайомити учнів із історією виникнення Олімпійського руху. Послідовність виконання проекту Етапи Завдання Діяльність учнів Діяльність педагога...
55322. Різдвяні зустрічі 62 KB
  Стало білим все село двічі Біла стежка біла річка Біла хата і смерічка двічі Біла хата білі коні Тільки носики червоні Діти зупиняються стають дугою.
55323. Подорож картою України 74.5 KB
  Додатково вони будуть розробляти буклети з фотографіями, малюнками, творчими роботами, нададуть матеріали для друкування в шкільну газету «Очима учня». В результаті проекту учні дадуть відповіді на питання, висунуті та удосконалені впродовж розробки теми проекту.
55324. На Україну линуть журавлі 55 KB
  Формувати уявлення про специфіку літератури української діаспори потребу до самостійного читання художньої літератури. Виховувати любов до української літератури.