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;

}


 

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

1122. Архитектура вычислительных систем 2.32 MB
  Ознакомление с принципом действия, машинными циклами и тактами микропроцессора КР580: изучение правил записи машинных программ(в машинных кодах и мнемокодах), исследование выполнения команд пересылки байта.
1123. Стальной каркас одноэтажного производственного здания 756 KB
  Расстояние от головки кранового рельса до низа несущих конструкций покрытия. Горизонтальные размеры поперечной рамы. Постоянная нагрузка от веса продольной стены и остекления. Постоянные нагрузки от подкрановой конструкции. Величина продольного усилия от постоянной нагрузки в отдельных сечениях колонны. Расчет на вертикальную нагрузку от мостовых кранов.
1124. Залізничний вагонний рухомий склад 311.5 KB
  Основні види та технічні параметри залізничного вагонного рухомого складу. Технічна характеристика платформи моделі 13-2114. Перевезення важковагових, довгомірних, громіздких вантажів.
1125. Основы лабораторных исследований по информатике 1.04 MB
  Составление, ввод, трансляция и выполнение программ линейной и разветвляющейся структуры. Составление, ввод, отладка и выполнение программ, использующих одномерные массивы. Программирование алгоритмов сортировки и поиска.
1126. Корреляционный и регрессионный анализ 955 KB
  Корреляционный анализ. Множественный коэффициент корреляции. Классификатор на основе ядерных оценок. Регрессионный анализ. Коэффициент ошибок (на обучающей выборке). Применение QDA.
1127. Термическая обработка углеродистой стали на мелкое зерно 110.5 KB
  Изучить влияние отжига и нормализации на величину зерна в стали. Освоить методику определения величины аустенитного зерна по ГОСТ 5639-82. Роль термической обработки в процессах формирования зерна в сталях.
1128. Термическая обработка углеродистой стали 272.5 KB
  Влияние термической обработки на механические свойства (твердость) углеродистой стали. Назначения режима термической обработки при проведении закалки, нормализации, отжига и отпуска углеродистой.
1129. Влияние углерода на твердость термически обработанных сталей 175 KB
  Зависимость между содержанием углерода в стали и ее твердостью после отжига и закалки. Влияние углерода на структуру и свойства отожженных сталей. Количество остаточного аустенита при закалке сталей при увеличении содержания углерода
1130. Определение прокалываемости стали 162.5 KB
  Ознакомиться с методикой определения прокаливаемости. Выяснить влияние химического состава сталей и размеров деталей на прокаливаемость. Неоднородный аустенит. Нерастворенные частицы (карбиды, оксиды, интерметаллические соединения).