Наслідувач – це більш ніж базовий клас, тому, якщо спадкоємств відкрите, то він може використовуватися скрізь, де використовується базовий клас, але не навпаки.
Наслідування буває публічним, захищеним і власним. При публічному спадкоємстві, публічні й захищені члени базового класу зберігають свій статус, а до власних не можуть звертатися навіть функції-члени спадкоємця. Захищене наслідування відрізняється тим, що при ньому публічні члени базового класу є захищеними членами спадкоємця. При власному спадкоємстві всі члени базового класу стають власними членами класу-спадкоємця. Таким чином, користувач похідного класу не може звертатися до членів базового класу, навіть якщо вони оголошені я публічні. Клас-наслідувач робить їх власними за допомогою власного спадкоємства. Як правило, публічне наслідування зустрічається значно частіше за інших.
Клас може бути спадкоємцем декількох класів. Це називається множинним наслідуванням. Такий клас володіє полями і функціями-членами всіх його предків.
Поліморфізмом в програмуванні називається перевизначення снаслідувачем функцій-членів базового класу.
У C++ є як статичний, так і динамічний поліморфізм, коли функція, що викликається, визначається під час виконання. Для цього функції-члени повинні бути віртуальними.
Чисто віртуальною функцією називається функція-член, яка оголошена зі специфікатором = 0:
Чисто віртуальна функція може бути залишена без визначення, крім випадку, коли вимагається зробити її виклик. Абстрактним класом називається такій, у якого є хоча б одна чисто віртуальна функція-член. Об'єкти таких класів створювати заборонено. Абстрактні класи часто використовуються як інтерфейси.
1.2 Типові середовища програмування та особливості мови С++
1.2.1 Borland C++ Buіlder
Система програмування Borland C++ Buіlder об'єднала в собі ідеї інтегрованого середовища розробки, реалізовані компанією в системах програмування Turbo Pascal й Borland Delphі з можливостями мови програмування C++. Історія цієї системи програмування починається з інтегрованого середовища розробки Borland Turbo.
Середовище Turbo являла собою реалізацію ідей, закладених компанією-розроблювачем у системі програмування Turbo Pascal для мови програмування C. Компанія Borland прагнула перенести вдалу реалізацію ідей інтегрованого середовища розробки на нову основу. Компілятор Turbo не був однопрохідним, і тому час компіляції вихідної програми перевищувало час компіляції аналогічної програми в Turbo Pascal. Крім того, у системі програмування використався стандартний компоновщик файлів, що виконують, MSDOS.
Сучасна реалізація Borland C++ Buіlder орієнтована на розробку результуючих програм, що виконуються під керуванням ОС Mіcrosoft Wіndows всіх типів. Сама система програмування Borland C++ Buіlder, як й Borland Delphі, також функціонує під керуванням ОС типу Mіcrosoft Wіndows. Вона повністю підтримує стандарт мови C, що уможливлює створення за допомогою даної системи програмування модулів і бібліотек, використовуваних в інших засобах розробки (чого дуже складно досягти за допомогою Borland Delphі).
За можливостями, зовнішнім виглядом й технологіями система програмування Borland C++ Buіlder схожа з системою програмування Borland Delphі. Вее основу покладені ті ж основні ідеї й технології. Структура класів мови C++ у системі програмування Borland C++ Buіlder побудована в тій же бібліотеці VCL (vіsual control lіbrary), у якій будується структура класів Object Pascal у системі програмування Borland Delphі. Правда, розроблювач, що створює програми на C++, може не користуватися класами VCL і взяти за основу будь-яку іншу бібліотеку, чого не можна сказати про розроблювача, що використає Object Pascal, набір доступних бібліотек для останньої мови сильно обмежений.
Успішне поширення систем програмування Turbo Pascal й Borland Delphі сприяло й впровадженню на ринок системи програмування Borland C++ Buіlder від тієї ж компанії-розроблювача. Ця система програмування займає міцну позицію на ринку засобів розробки для мови C++, де існує досить тверда конкуренція.
1.2.2 Mіcrosoft Vіsual C++
Система програмування Mіcrosoft Vіsual C++ являє собою реалізацію середовища розробки для розповсюдженої мови системного програмування C++, виконану компанією Mіcrosoft. Ця система програмування в цей час побудована у вигляді інтегрованого середовища розробки, що включає в себе всі необхідні засоби для розробки результуючих програм, орієнтованих на виконання під керуванням ОС типу Mіcrosoft Wіndows різних версій.
Основу системи програмування Mіcrosoft Vіsual C++ становить бібліотека класів MFC (Mіcrosoft foundatіon classes). Вэтой бібліотеці реалізовані у вигляді класів C++ всі основні органи керування й інтерфейсу ОС. Також у її склад входять класи, що забезпечують розробку додатків для архітектури клієнт-сервер і трехуровневой архітектури (у сучасних версіях бібліотеки). Система програмування Mіcrosoft Vіsual C++ дозволяє розробляти будь-які додатки, що виконуються в середовищі ОС типу Mіcrosoft Wіndows, у тому числі серверні або клієнтські результуючі програми, що здійснюють взаємодію між собою по одній із зазначених вище архитектур.
Класи бібліотеки MFC орієнтовані на використання технологій COM/DCOM, а також побудованої на їхній основі технології Actіve для організації взаємодії між клієнтською й серверною частиною розроблювальних додатків. На основі класів бібліотеки користувач може створювати свої власні класи в мові C++, організовувати свої структури даних.
Навідміну від систем програмування компанії Borland, система програмування Mіcrosoft Vіsual C++ орієнтована на використання стандартних засобів зберігання й обробки ресурсів інтерфейсу користувача в ОС Wіndows. Це не дивно, оскільки всі версії ОС типу Wіndows розробляються самою компанією Mіcrosoft. Mіcrosoft Vіsual C++ забезпечує всі необхідні засоби для створення професійних Wіndows-приложений. Від версії до версії продукт стає простіше у використанні, розширюються можливості застосування, підвищується продуктивність.
Система програмування Mіcrosoft Vіsual C++ витримала кілька реалізацій. Впроцессе виходу нових версій системи програмування було випущено й кілька версій бібліотеки MFC, на якій заснована дана система.
Сама по собі бібліотека MFC є, на думку автора, досить удалою реалізацією широкого набору класів мови C++, орієнтованого на розробку результуючих програм, що виконуються під керуванням ОС типу Mіcrosoft Wіndows. Це багато в чому обумовлене тим, що творець бібліотеки компанія Mіcrosoft одночасно є й творцем ОС типу Mіcrosoft Wіndows, на які орієнтований об'єктний код бібліотеки. Бібліотека може бути підключена до результуючої програми за допомогою звичайного компоновщика, або використатися як динамічна бібліотека, що підключає до програми під час її виконання. Бібліотека MFC досить широко поширена. Її можливо використати не тільки в складі систем програмування виробництва компанії Mіcrosoft, але й у системах програмування інших виробників.
1.2.3 Мова програмування С++
Мова С++ виникла на початку 1980-х років, коли співробітник фірми «Bell Laboratories» Бьерн Страуструп вигадав ряд удосконалень до мови С. До початку офіційної стандартизації мова розвивалася в основному силами Страуструпа. У 1998 році був ратифікований міжнародний стандарт мови С++: «Standard for the C++ Programming Language».
Страуструп почав працювати над «Сі з класами» в 1979 році. Він вирішив доповнити мову С (наступник BCPL) можливостями, що є в мові Симула (Simula). Мова С, будучи базовою мовою системи UNIX, на якій працювали комп'ютери «Bell», є швидкою, багатофункціональною і переносною. Страуструпдодав до неї моєливість роботи з класами і об'єктами. В результаті, практичні задачі моделювання виявилися доступними для вирішення як з погляду часу розробки (завдяки використанню Симула - подібних класів) так і з погляду часу оючислень (завдяки швидкодії С). На початку в С були додані класи (з інкапсуляцією), похідні класи, сувора перевірка типів, inline-функції і аргументи за умовчанням.
У 1983г. відбулося перейменування мови з С з класами в С++ .
Мова С++ є сумісним знизу-вгору розширенням безпосередньо мови С. Принципова зміна полягає в появі нового реального примітивного типу даних - класу. Ця мова не містить типів даних високого рівня і примітивів, а, подібно мові С, забезпечує розширення за допомогою бібліотек. Таким чином, нові типи задаються безпосередньо усередині самої мови.
У мові С++ особлива увага надається можливості підтримки значної частини існуючого коду, написаного на мові С. Кроме того стають можливим порушення захисту даних і правил типізації, внаслідок чого доступ до даних може виявитися неправильним. Мова С++ є компромісним рішенням між об'єктно-орієнтованим ідеалом і прагматичним підходом.
Мова С++ підтримує абстракцію, спадкоємство, рекурсію і динамічне скріплення. Підтримується також і статичний, і динамічний контроль типів. Система типів є колекцією відносно невеликих дерев. Тому для С++ характерною є тенденція підтримування широких та пласких структур класів, яка буде сприяти створенню вузьких і глибоких структур класів.
Одна оригінальна властивість мови С++ пов'язана з можливістю представлення деякій функції (або класу) привілейованого доступу до закритих частин декількох класів, членом яких ця функція (або клас) не є. З цією метою така функція оголошується «другом» даних класів. Ця властивість може бути використане для спрощення опису операції над двома типами. Ця властивість вимагає украй обережного ставлення внаслідок можливого порушення інкапсуляції.
В мові С++ не передбачена збірка сміття. Подібна властивість повинна реалізуватися програмістом або надаватися середовищем у вигляді відповідних бібліотек коду. Останніми в мову С++ були додані шаблони. За їх допомогою підтримується необмежена універсальність; проте шаблони були піддані критиці з огляду на те, що вони приводять до роздування коду і уповільнення компіляції. Існує стандартна бібліотека шаблонів (STL), яка може використовуватися будь-яким компілятором.