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совместимый персональный компьютер... | |||