у повідомить компілятор.
Однак програма може оголосити покажчик абстрактного класу, так що наступна рядок цілком допустима:
* sPtr;
Компоненти абстрактного класу можуть успадковуватися. Якщо всі чисті віртуальні методи класу перевантажені правилами, які не є чистими і віртуальними, клас може не бути абстрактним. У наступному прикладі клас Secretary може бути реалізований об'єктом, оскільки функція promote була перевантажена і має тепер інший сенс. p align="justify"> Secretary: public Employee {: moreData;: (char * n): Employee (n) {} void * promote ();
}; sec ("Another Name");
Адреса об'єкта Secretary може бути переданий у функцію, яка очікує передачі Employee:
fn (Employee *); sec ("Another Name"); (& sec);
Абстрактні класи корисні для організації ієрархічної структури класів. Наприклад, може бути відомо, що всі службовці повинні належати до підкласу Employee. Оскільки різні службовці мають різні цикли просування по службі (promotion), кожен підклас повинен мати власний метод promote (). Оголосивши promote () як чисту віртуальну функцію, розробник класу Employee вимагає тим самим, щоб розробник підкласу написав метод promote () до реалізації будь-якого похідного класу від Employee. br/>
2. Множинне спадкування
Спадкування являє собою здатність похідного класу успадковувати характеристики існуючого базового класу. Простими словами це означає, що, якщо у вас є клас, чиї елементи даних або функції-елементи можуть бути використані новим класом, ви можете побудувати цей новий клас в термінах існуючого (або базового) класу. Новий клас у свою чергу буде наслідувати елементи (характеристики) існуючого класу. Використання успадкування для побудови нових класів заощадить вам значний час і сили на програмування. Об'єктно-орієнтоване програмування широко використовує спадкування, дозволяючи вашій програмі будувати складні об'єкти з невеликих легко керованих об'єктів. p align="justify"> У C + + клас може успадковувати властивості більш ніж одного класу. Формат визначення успадкування класом властивостей декількох базових класів аналогічний формату визначення наслідування властивостей окремого класу. Наведемо приклад. p align="justify"> SubClass: public Base1, private Base2 {
// інша частина визначення класу
}
У визначенні може бути перераховано будь-яке число базових класів через кому. Жоден базовий клас не може бути прямо успадкований більше одного разу. Кожен базовий клас може бути успадкований як public або як private; умовчанням є private. p align="justify"> Коли клас міг успадковувати властивості тільки одного єдиного класу, послідовність виконання конструкторів не була жорстко заданої. З ...