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;

}


 

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

18077. АНТЕНИ СИСТЕМ КОРОТКОХВИЛЬОВОГО ЗВ’ЯЗКУ ТА РАДІОМОВЛЕННЯ 258.5 KB
  ЛЕКЦІЯ №4 з навчальної дисципліни ПРИКЛАДНІ ПИТАННЯ АНТЕННИХ ПРИСТРОЇВ ТЕМА 1: АНТЕНИ РТС ПЕРЕДАЧІ ІНФОРМАЦІЇ. ЗАНЯТТЯ 5: антенИ систем короткохвильового звязку та радіомовлення. 1. НАВЧАЛЬНІ ПИТАННЯ Вимоги до антен коротк...
18078. ЧАСТОТНО НЕЗАЛЕЖНІ АНТЕНИ 365.5 KB
  ЛЕКЦІЯ №5 з навчальної дисципліни ПРИКЛАДНІ ПИТАННЯ АНТЕННИХ ПРИСТРОЇВ ТЕМА 2: Частотні властивості антен. ЗАНЯТТЯ 1: Частотно незалежні антени 1. НАВЧАЛЬНІ ПИТАННЯ Принцип створення частотно незалежних антен. 2. Пр
18079. АКТИВНІ ПЕРЕДАВАЛЬНІ АНТЕНИ 351 KB
  ЛЕКЦІЯ №7 з навчальної дисципліни ПРИКЛАДНІ ПИТАННЯ АНТЕННИХ ПРИСТРОЇВ ТЕМА 3: Активні антени. ЗАНЯТТЯ 1: Активні передавальні антени. 1. НАВЧАЛЬНІ ПИТАННЯ Загальні відомості про активні передавальні антени. Ант...
18080. АКТИВНІ ПРИЙМАЛЬНІ АНТЕНИ 408.5 KB
  PAGE 32 ЛЕКЦІЯ №8 з навчальної дисципліни ПРИКЛАДНІ ПИТАННЯ АНТЕННИХ ПРИСТРОЇВ для студентів 5 курсу ТЕМА 3: Активні антени. ЗАНЯТТЯ 2: Активні прИЙМАльні антени. 1. НАВЧАЛЬНІ ПИТАННЯ Загальні відомості про активні приймальні ан...
18081. АНТЕНИ ТА ЕЛЕКТРОМАГНІТНА СУМІСНІСТЬ (ЕМС) 384 KB
  ЛЕКЦІЯ №10 з навчальної дисципліни ПРИКЛАДНІ ПИТАННЯ АНТЕННИХ ПРИСТРОЇВ ТЕМА 4: Антени та ЕМС. Моделювання та проектування антеннофідерних пристроїв ЗАНЯТТЯ 1: Антени та електромагнітна сумісність ЕМС 1. НАВЧАЛЬНІ ПИТАННЯ ...
18082. Работа со строками в Java 311.5 KB
  Лабораторная работа 5 Работа со строками в Java. Цель работы Целью работы является приобретение навыков программирования с использованием строк языка Java. Состав рабочего места. Оборудование: IBMсовместимый персональный компьютер ПК. Программное...
18083. Программирование апплетов в Java 364 KB
  Лабораторная работа 303 Программирование апплетов в Java 1. Цель работы Целью работы является приобретение навыков программирования апплетов Java с использованием средств AWT. 2. Состав рабочего места 2.1. Оборудование: IBMсовместимый персональный компьютер ПК. ...
18084. Использование системы Swing в Java 493 KB
  Лабораторная работа 7 Использование системы Swing в Java 1. Цель работы Целью работы является приобретение навыков программирования графических приложений Java с использованием элементов управления AWT. 2. Состав рабочего места 2.1. Оборудование: IBMсовместимый п
18085. Программирование ввода-вывода в Java 276.5 KB
  Лабораторная работа 8 Программирование вводавывода в Java 1. Цель работы Целью работы является приобретение навыков использования потоков вводавывода в программах на языке Java. 2. Состав рабочего места 2.1. Оборудование: IBMсовместимый персональный компьютер...