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;

}


 

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

37649. МІЖНАРОДНО-ПРАВОВА ОХОРОНА СЕРЕДОВИЩА СВІТОВОГО ОКЕАНУ, ТВАРИННОГО ТА РОСЛИННОГО СВІТУ 709.5 KB
  Мета курсової роботи залежить від пошуку ефективних шляхів, вкладених у гарантоване забезпечення сприятливого середовища Світового океану, тваринного та рослинного світу, екологічну безпеку із застосуванням міжнародно-правових екологічних принципів, і норм.
37650. Транзисторный ключ с нагрузкой индуктивного характера 326.5 KB
  Цель работы: ознакомление с особенностями переходных процессов в схемах транзисторных ключей с нагрузкой индуктивного характера. Оборудование: лабораторный стенд Е91А 2636, осциллограф С1 – 143, генератор сигналов – низкочастотный Г3 – 120.
37651. Усилитель высокой частоты УВЧ 998 KB
  Цель работы: определить неисправность в усилителе высокой частоты УВЧ. Оборудование: осциллограф С1 – 101, тренажер Т – 97, вольтметр В7 – 20.
37652. Блокинг – генератор 247.5 KB
  Для запуска блокинг – генератора в цепь эмиттера подается положительный импульс напряжения. Под действием этого импульса в цепи эмиттера возникает ток открывающий транзистор и вызывающий появление тока в цепи коллектора. Потенциал коллектора повышается, а на обмотке трансформатора, включенной в его цепь, появляется напряжение
37653. Усилитель импульсного напряжения УИН 839.5 KB
  Цель работы: определить неисправность в усилителе импульсного напряжения УИН. Оборудование: осциллограф С1 – 101, тренажер Т – 97, вольтметр В7 – 20.
37654. Усилитель постоянного тока УПТ 910 KB
  Цель работы: определить неисправность в усилителе постоянного тока УПТ. Оборудование: осциллограф С1 – 101, тренажер Т – 97, вольтметр В7 – 20.
37655. Генератор низкой частоты ГНЧ 807 KB
  Цель работы: определить неисправность в генераторе низкой частоты ГНЧ. Оборудование: осциллограф С1 – 101, тренажер Т – 97, вольтметр В7 – 20.
37656. Генератор высокой частоты ГВЧ 1.11 MB
  Цель работы: определить неисправность в генераторе высокой частоты ГВЧ. Оборудование: осциллограф С1 – 101, тренажер Т – 97, вольтметр В7 – 20.
37657. МІЖНАРОДНО-ПРАВОВА ВІДПОВІДАЛЬНІСТЬ МІЖНАРОДНИХ ОРГАНІЗАЦІЙ. СПІЛЬНІ І ОСОБЛИВІ РИСИ В ПОРІВНЯННІ З ВІДПОВІДАЛЬНІСТЮ ДЕРЖАВИ 285 KB
  Проблема відповідальності в міжнародному праві безпосередньо пов’язана з функціонуванням міжнародного права та забезпеченням миру і правопорядку у світі. Таке розуміння цього міжнародно-правового інституту характерне, як для міжнародної наукової доктрини, так і для вітчизняної.