Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_teoria_OOP.docx
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
33.98 Кб
Скачать

Cтатичні члени класів і статичні класні функції

Доповнимо клас Employee визначенням вільного ідентифікаційного коду службовця. Самий простий спосіб — оголосити його статичною змінною:

static unsigned int currentId;

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

unsigned int Employee :: currentId = 0;

Відповідних змін може зазнати конструктор, в якому тепер стане на параметр менше. Залежно від обставин ним може виявитися додатково довизначений конструктор

12. Поняття перевантаження функції . Правила перевантаження функції. Приклади перевантаження функції – методів класу ( конструкторів). Аргументи за замовчуванням .

Перевантаження функції -  можливість у різноманітних мовах програмування, що дозволяє створювати кілька реалізацій функції(09051004010031000102000018методу) із тим же ім'ям проте з різною сигнатурою — з різною кількістю параметрів або з різним типом параметрів

Для того, щоб коректно використовувати механізм перевантаження функції небхідно дотримуватись правил:

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

б) якщо функція містить параметри з аргументами по замовчуванні, то компілятор не вважає їх частиною сигнатури.

Приклад 1.3.8

#include <math>

#include <iostream>

double square(double);

double square(double,double);

double square(double,double,double);

main()

{

std::cout<<"Площа круга"<<square(1)<<'\n';

std::cout<<"Площа прямокутника"<<square(1,2)<<'\n';

std::cout<<"Площа трикутника"<<square(1,2,3)<<'\n';

}

double square(double d1){

return 3.14*d1*d1;

}

double square(double d1,double d2){

return d1*d2;

}

double square(double d1,double d2,double d3){

double =(d1+d2+d3)/2;

return sqrt(p*(p-d1)*(p-d2)*(p-d3));

}

Аргументи за замовчуванням

Функції з аргументами по замовчуванні. В С++ вперше з'явилась можливість використання нового типу  аргумента. Цей аргумент можна явно не вказувати, оскільки компілятор, в разі потреби, сам присвоїть йому значення. Якщо необхідно передати нове значення, то це здійснюється явно у виклику функції. Так визначений параметер функції називається параметром з аргументом по замовчуванні.

Іншими словами, технологія використання параметрів з аргументами по замовчуванні полягає у слідуючому: щоб передати параметру аргумент по замовчуванні, треба в оголошені функції прирівняти параметер до того значення, яке треба передати, якщо при викликуфункції відповідний аргумент не буде вказаний явно

Використовуючи аргументи по замовчуванні треба дотримуватись двох правил:

а) коли параметру призначається аргумент по замовчуванні, то й усім наступним параметрам треба призначати параметри по замовчуванні; усі звичайні параметри оголошуються попереду параметрів з аргументами по замовчуванні;

б) коли використовується значення аргумента по замовчуванні для деякого параметра, то й для усіх наступних параметрів треба використовувати значення аргументів по замовчуванні.

13. Перевантаження функцій та неоднозначність

14. Поняття дружності. Дружні функції. Дружні класи.

Властивість дружності (модифікатор friend) з'явилась з метою забезпечення необмеженого доступу до членів класу. Дружній клас або дружня функція мають доступ до будь-яких членів класу незалежно від свого оголошення.

Дружній клас чи дружні функція не є членами класу, стосовно якого вони декларуються дружніми. Реалізовуються вони у звичний для своєї структури спосіб. Однак в оголошенні класу, стосовно якого використовується механізм дружності, вони оголошуються із зарезервованим словом friend, тобто в тілі класу присутнї лише декларації дружності класів чи функцій.

Дружні функції – це функції, які не являються членами класу, хоча записуються у визначенні класу. Позначається словом Friend і записується в public

Дружні класи – це класи, що дозволяють надати повний доступ до членів свого класу. Для цього досить включити в оголошенні класу ім’я іншого класу, що оголошують дружнім.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]