- •Концепції ооп
- •3 Класи. Формат оголошення класів. Специфікатори прав доступу. . Створення об’єктів. Доступ до елементів класу
- •Cтатичні члени класів і статичні класні функції
- •12. Поняття перевантаження функції . Правила перевантаження функції. Приклади перевантаження функції – методів класу ( конструкторів). Аргументи за замовчуванням .
- •Аргументи за замовчуванням
- •15. Статичні члени класу.
- •Cтатичні члени класів і статичні класні функції
- •26. Передача параметрів конструкторам базового класу. Навести приклади
- •31. Чисто віртуальні функції. Абстрактні класи. Навести приклади.
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 p =(d1+d2+d3)/2;
return sqrt(p*(p-d1)*(p-d2)*(p-d3));
}
Аргументи за замовчуванням
Функції з аргументами по замовчуванні. В С++ вперше з'явилась можливість використання нового типу аргумента. Цей аргумент можна явно не вказувати, оскільки компілятор, в разі потреби, сам присвоїть йому значення. Якщо необхідно передати нове значення, то це здійснюється явно у виклику функції. Так визначений параметер функції називається параметром з аргументом по замовчуванні.
Іншими словами, технологія використання параметрів з аргументами по замовчуванні полягає у слідуючому: щоб передати параметру аргумент по замовчуванні, треба в оголошені функції прирівняти параметер до того значення, яке треба передати, якщо при викликуфункції відповідний аргумент не буде вказаний явно
Використовуючи аргументи по замовчуванні треба дотримуватись двох правил:
а) коли параметру призначається аргумент по замовчуванні, то й усім наступним параметрам треба призначати параметри по замовчуванні; усі звичайні параметри оголошуються попереду параметрів з аргументами по замовчуванні;
б) коли використовується значення аргумента по замовчуванні для деякого параметра, то й для усіх наступних параметрів треба використовувати значення аргументів по замовчуванні.
13. Перевантаження функцій та неоднозначність
14. Поняття дружності. Дружні функції. Дружні класи.
Властивість дружності (модифікатор friend) з'явилась з метою забезпечення необмеженого доступу до членів класу. Дружній клас або дружня функція мають доступ до будь-яких членів класу незалежно від свого оголошення.
Дружній клас чи дружні функція не є членами класу, стосовно якого вони декларуються дружніми. Реалізовуються вони у звичний для своєї структури спосіб. Однак в оголошенні класу, стосовно якого використовується механізм дружності, вони оголошуються із зарезервованим словом friend, тобто в тілі класу присутнї лише декларації дружності класів чи функцій.
Дружні функції – це функції, які не являються членами класу, хоча записуються у визначенні класу. Позначається словом Friend і записується в public
Дружні класи – це класи, що дозволяють надати повний доступ до членів свого класу. Для цього досить включити в оголошенні класу ім’я іншого класу, що оголошують дружнім.
