АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

ПЕРЕВИЗНАЧЕННЯ ЕЛЕМЕНТІВ БАЗОВОГО КЛАСУ В ПОХІДНОМУ КЛАСІ. ОПЕРАЦІЯ ВИДИМОСТІ

Читайте также:
  1. Аналіз результатів учнів 8 класу на ІІІ етапі Всеукраїнської учнівської олімпіади з географії у Житомирській області 2014 року
  2. Визначення гігієнічного класу робіт за показниками шкідливості й небезпечності робочого процесу. Атестація робочого місця
  3. Деякі властивості та події елементів управління
  4. Для 5 класу
  5. Для III і IV класу - не менше ніж один раз на квартал.
  6. Економічна конкуренція. Місце конкуренції в системі елементів ринку. Умови виникнення конкуренції
  7. Завдання 1. Накопичення суми елементів масиву
  8. Залізобетонні конструкції. Особливості конструювання згинальних елементів.
  9. Застосування обтікання текстом до елементів шаблонних сторінок
  10. Звернення до елементів векторів та операції з ними
  11. Звернення до елементів матриці та операції з ними
  12. Зіставлення XML-елементів з аркушем.

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

Відкритий похідний клас є підтипом свого базового класу. У багатьох випадках змінна похідного класу може розглядатися як змінна типу базового класу. Вказівник, тип якого - «вказівник на базовий клас», може вказувати на об'єкти, що мають тип похідного класу. Розглянемо наш приклад з класами student і grad_student. Спочатку досліджуємо конструктори базового і похідного класів.
 
student:: student (char* nm, int id, double g, year x) : student_id (id), gpa(g), y(x) { Strcpy (name, nm); }
 

Конструктор базового класу виконує декілька простих ініціалізацій. Потім він викликає strcpy () для копіювання імені студента.

grad_student::grad_student (char* nm, int id, double g, year x, support t, char* d, char* th) : student(nm, id, g, x), s(t) { Strcpy(dept, d); strcpy(thesis, th); }
 

 

Необхідно відмітити те, що тут конструктор student викликається як частина списку ініціалізаторів. Це цілком природно і логічно - для завершення створення об'єкту спочатку треба створити об'єкт базового класу.

Тип grad_student є відкритим похідним типом, базовий клас якого - student. У класі student члени student_id і gра є захищеними. Це робить їх видимими для похідних класів, але для всіх останніх вони поводяться як закриті.

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

Наприклад: grad_student gs("Моррис Пол", 200, 3.2564, grad, ta, " Фармакологія ", " Продаж ліків "); Student& rs = gs;
 

В даному випадку змінна rs є посиланням на student. Базовим класом grad_student є student. Тому таке перетворення посилання справедливе. Функції-члени print () реалізовані таким чином:

void student::print() const { cout << name << ", " << student_id < < ", " << у << ", " << gpa << endl; } void grad_student::print() const { student::print (); //виводиться інформація базового класу cout << dept << ", " << s << '\n' << thesis << endl; }
 

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.)