Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Успадкування і захищені члени в С++




Перезавантаження операторів з використанням дружніх функцій в С++.

Створення операторної функції-члена в С++.

Оголошення

Namespace space_name

Простори імен в С++. Директива using.

Пам'яті

Демонстрація механізму динамічного розподілу

#include <iostream> // Потокове введення-виведення

using namespace std; // Використання стандартного простору імен

int main ()

{

int * p;

p = new int; // Виділяємо пам'ять для int -значення.

*p = 20; // Поміщаємо в цю область пам'яті значення 20.

cout << *p; // Переконуємося (шляхом виведення на екран) в роботоздатності цього коду програми.

delete p; // Звільняємо пам'ять.

getch (); return 0;

}

Простори імен (namespaces) призначені для локалізації імен ідентифікаторів, і попередження їх конфліктів.

Щоб створити простір імен використовують ключове слово namespace. Код:

{

}

Щоб отримати доступ до об'єктів з простору іменн з за його меж використовують оператор дозволу області видимості (::).

namespace some { int something; } something=1; // Помилка, something невидиме. some::something=1; // Ми вказали в якій області його шукати. using namespace name; using name::member; У першому варіанті ім'я name задає назву простору імен. Всі елементи цього простору стають частиною поточної області видимості і можуть використовуватися без указівкит кваліфікатору. В другому варіанті в область видимості включається тільки конкретний елемент простору імен.

Операторна функція-член має наступний вигляд:
тип ім’я_класу::operator# { список-аргументів)
{
... // Операції
}


Зазвичай операторна функція повертає об'єкт класу, з яким вона працює проте тип значення, що повертається, може бути будь-яким. Символ # замінюється необхідним оператором. Наприклад, якщо в класі перевантажується оператор ділення «/» операторна функція-член називається operator/.

Перевантаження оператора полягає в зміні сенсу оператора (наприклад, оператора плюс (+), який звичайно в C++ використовується для додавання) при використанні його з певним класом.

Успадкування – це здатністю похідного класу успадковувати характеристики існуючого базового класу. Простими словами це означає, що, якщо у вас є клас, чиї елементи даних або функції-елементи можуть бути використані новим класом, ви можете побудувати цей новий клас в термінах існуючого (або базового) класу. Новий клас у свою чергу буде успадковувати елементи (характеристики) існуючого класу. Використовування успадкування для побудови нових класів заощадить вам значний час і сили на програмування. Об'єктно-орієнтоване програмування широко використовує успадкування, дозволяючи вашій програмі будувати складні об'єкти з невеликих легко керованих об'єктів.

Коли клас успадковує характеристики декількох класів – це називаэться множинне успадкування. C++ повністю підтримує множинне успадкування. Відразу необхідно освоїти наступні основні концепції:

· При множинному успадкуванні похідний клас одержує атрибути двох або більш класів.

· При використовуванні множинного успадкування для породження класу конструктор похідного класу повинен викликати конструктори всіх базових класів.

· При породженні класу з похідного класу утворюється ієрархія успадкування (ієрархія класів).

Множинне успадкування є могутнім інструментом об'єктно-орієнтованого програмування.

В базових класах крім елементів, оголошених як public та private (загальні, приватні) зустрічаються елементи, оголошені як protected (захищені).

Як ви знаєте, похідний клас може звертатися до загальних елементів (public) базового класу, наче вони визначені в похідному класі. Але і поза методами похідного класу до загальних елементів можна звертатися напряму. З другого боку, хоч до приватних елементів (prvate) базового класу і неможна звертатися поза методами класу, але і в самому похідному класі не може звертатися напряму – для звернення до таких елементів похідний клас повинен використовувати інтерфейсні функції. Захищені елементи (protected) базового класу займають проміжне положення між приватними і загальних. Якщо елемент є захищеним, то

· По-перше, у методах похідного класу можна звертатися до нього, наче він є загальним, або описаний всередині класу-спадкоємця.

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




Поделиться с друзьями:


Дата добавления: 2015-05-23; Просмотров: 657; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.