Студопедия  
Главная страница | Контакты | Случайная страница

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

ObjC.B::show(); //правильний виклик

Читайте также:
  1. ВИКЛИК КОНСТРУКТОРІВ ТА ДЕСТРУКТОРІВ _________________________________________
  2. підпис слідчого, прокурора, слідчого судді, судді, який здійснив виклик.
  3. Процес виклику підпрограми. Програмний стек
  4. Чому локальнi струми не викликають розвитку розповсюджуючого

- до класу В.

В літературі (Б.Страуструп) це називається усуненням неоднозначністю.

Інший вид невизначеності з’являється, якщо ми створюємо похідний клас від двох базових класів, які, в свою чергу, є похідними одного класу. Це створює дерево успадковування в формі ромба. Така ситуація виникає в програмі 17.12

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<bios.h>

//---------------------------------------------------------

class A

{

public:

void func();

};

class B:public A

{ };

//---------------------------------------------

class C:public A

{ };

//-----------------------------------------------

class D:public B,public C

{};

//////////

int main()

{clrscr();

// ObjD.func(); помилковий виклик

bioskey(0);

return 0;

}

Програма 17.12

Класи В і С є похідними класу А, а клас D є похідним класів В і С. Труднощі виникають, коли об’єкт класу D намагається скористатися методом класу А. В програмі 17.12 об’єкт objD використовує метод func(). Однак класи В і С містять копії методу func(), успадковані від класу А. Компілятор на може вирішити, який метод використовувати, і повідомляє про помилку.

Існує багато варіацій цієї проблеми, тому ряд експертів радить уникати множинного успадковування.

2. ВКЛЮЧЕННЯ: КЛАСИ В КЛАСАХ
Далі ми обговоримо включення, хоча воно й не має прямого стосунку до успадковування, механізми включення та успадковування є формами взаємовідносин між класами. Тому корисно буде порівняти їх.

Якщо клас В є похідним від класу А, то ми кажемо, що клас В є частково класом А, оскільки клас В має всі характеристики класу А, а також свої власні. Тому часто успадковування називають взаємовідносинами узагальнення.

Включення називають взаємовідносинами типу «має»: бібліотека «має» книжки, або «частина цілого»: книжка є частиною бібліотеки.

В ООП включення з’являється, якщо один об’єкт є атрибутом іншого об’єкту. Розглянемо випадок, коли об’єкт класу А є атрибутом класу В:




Дата добавления: 2015-01-29; просмотров: 26 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав