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

Void main(void)

{

computer my_pc("Compaq", 212, 1.44, "SVGA",

16000000, 640, 480, 486, 66, 8);

my_pc.show_computer( );

}

Якщо ви проаналізуєте конструктор класу computer, то знайдете, що він викликає конструктори класів mother_board і computer_screen, як показано нижче:

computer::computer(char *name, int hard_disk, float floppy,

char *screen, long colors, int x_res, int y_res,

Int processor, int speed, int ram) :

computer_screen(screen, colors, x_res, y_res),

mother_board(processor, speed, RAM)

При використовуванні спадкоємства в C++ для породження одного класу з другого можливі ситуації, коли ви породжуєте свій клас з класу, який вже, у свою чергу, є похідним від деякого базового класу. Наприклад, припустимо, вам необхідно використовувати клас computer як базовий для породження класу work_station, як показано нижче:

class works_tation : public computer {

public:

work_station(char *operating_system,

char *name, int hard_disk, float floppy,

char *screen, long colors, int x_res, int y_res,

Int processor, int speed, int ram);

Void show_work_station(void);

private:

char operating_system[64];

};

Конструктор класу work_station просто викликає конструктор класу computer, який у свою чергу викликає конструктори класів computer_screen і mother_board:

work_station::work_station( char *operating_system,

char *name, int hard_disk, float floppy,

char *screen, long colors, int x_res, int y_res,

Int processor, int speed, int ram) :

computer (name, hard_disk, floppy, screen,

colors, x_res, y_res, processor, speed, RAM)

{

strcpy(work_station::operating_system, operating_system);

}

У цьому випадку клас computer виступає в ролі базового класу. Проте ви знаєте, що клас computer був породжений з класів computer_screen і mother_board. В результаті клас work_station успадковує характеристики всіх трьох класів.

28. Приватні елементи і друзі

Як ви вже знаєте, програми можуть звертатися до приватних (private) елементів класу тільки за допомогою функцій-елементів цього ж класу. Використовуючи приватні елементи класу замість загальних у всіх ситуаціях, де це тільки можливо, ви зменшуєте можливість програми випадково змінити значення елементів класу, оскільки програма може звертатися до таких елементів тільки через інтерфейсні функції (які керують доступом до приватних елементів). Проте залежно від використовування об'єктів вашої програми, іноді ви можете істотно збільшити продуктивність, дозволяючи одному класу напряму звертатися до приватних елементів іншого. У такому разі зменшуються витрати часу на виклик інтерфейсних функцій. В подібних ситуаціях C++ дозволяє визначити клас як друг (friend) іншого класу і дозволяє класу-другові доступ до приватних елементів цього іншого класу [8].

Щоб вказати C++, що один клас є другом (friend) іншого класу, ви просто розміщуєте ключове слово friend і ім'я відповідного класу-друга всередину визначення цього класу. Наприклад, приведений нижче клас book оголошує клас librarian своїм другом:

class book {

public:

book(char *, char *, char *);