Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мищишин електронка.doc
Скачиваний:
1
Добавлен:
08.12.2018
Размер:
1.04 Mб
Скачать

Void show_employee(void);

Int change_salary (float);

long get_id(void);

private:

char name[64];

long employee_id;

float salary;

};

employee :: employee(char *name, long employee_id,

float salary)

{

strcpy(employee :: name, name);

employee :: employee_id = employee_id;

if (salary < 50000.0)

employee :: salary = salary;

else

// Неприпустимий ставка

employee :: salary = 0.0;

}

void employee :: ~ employee(void)

{

cout << "Знищення об'єкту для " << name << endl;

}

Void employee :: show_employee(void)

{

cout << "Службовець: " << name << endl;

cout << "номер службовця: " << employee_id <<endl;

cout << "Ставка: " << salary << endl;

}

Void main(void)

{

employee worker("Happy Jamsa", 101, 10101.0);

worker.show_employee();

}

Якшо відкомпілювати і виконати цю програму, на моніторі з'являться наступні рядки:

С:\> DESTRUCT <EHTER>

Службовець: Happy Jamsa

Номер службовця: 101

Ставка: 10101

Знищення об'єкту для Happy Jamsa

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

26. Спадковість

Мета об'єктно-орієнтованого програмування полягає в повторному використовуванні створених вами класів (об’єктів), що економить ваш час і сили. Якщо ви вже створили деякий клас, то можливі ситуації, що новому класу потрібні багато або навіть всі особливості вже існуючого класу, і потрібно додати лише один або декілька елементів даних або функцій. В таких випадках C++ дозволяє вам будувати новий об'єкт, використовуючи характеристики вже існуючого об'єкту. Іншими словами, новий об'єкт успадковуватиме елементи існуючого класу (базовий клас). Коли ви будуєте новий клас з існуючого, цей новий клас часто називається похідним класом.

Припустимо, що у вас є базовий клас employee:

class employee {

public:

employee(char *, char *, float);

Void show_employee (void);

private:

char name[64];

char position[64];

float salary;

};

Далі припустимо, що вашій програмі потрібен клас manager, який додає наступні елементи даних в клас employee:

float annual_bonus;

char company_car[64];

Int stock_options;

В цьому випадку ваша програма може мати два варіанти: по-перше, програма може створити новий клас manager, який дублює багато елементів класу employee, або програма може породити клас типу manager з базового класу employee. Створюючи клас manager з існуючого класу employee, ви знижуєте об'єм необхідного програмування і уникаєте дублювання коду всередині вашої програми.

Для визначення цього класу ви повинні вказати ключове слово class, ім'я manager, наступні за ним двокрапка і ім'я базового класу employee, як показано нижче:

class manager : public employee {

// Тут записуються елементи

};

Ключове слово public, яке передує імені класу employee, указує, що загальні (public) елементи класу employee також є загальними і в класі manager. Наприклад, наступні оператори породжують клас manager.

class manager : public employee {

public:

manager (char *, char *, char *, float, float, int);