Язык программирования C++ для профессионалов


Виртуальные базовые классы - часть 4


class window_w_banner : public virtual window { // класс "окно с заголовком" void draw(); void update_banner_text(); };

void window_w_banner::update_banner_text() { // ... get_input(); // изменить текст заголовка }

В другом производном классе функцию get_input() можно определять, не задумываясь о том, кто ее будет использовать:

class window_w_menu : public virtual window { // класс "окно с меню" // определения, связанные с меню void draw(); void get_input(); // переопределяет window::get_input() };

Все эти определения собираются вместе в производном классе следующего уровня:

class window_w_banner_and_menu : public virtual window, public window_w_banner, public window_w_menu { void draw(); };

Контроль неоднозначности позволяет убедиться, что в классах-братьях определены разные функции:

class window_w_input : public virtual window { // ... void draw(); void get_input(); // переопределяет window::get_input };

class window_w_input_and_menu : public virtual window, public window_w_input, public window_w_menu { // ошибка: оба класса window_w_input и // window_w_menu переопределяют функцию // window::get_input void draw(); };

Транслятор обнаруживает подобную ошибку, а устранить неоднозначность можно обычным способом: ввести в классы window_w_input и window_w_menu функцию, переопределяющую "функцию-нарушителя", и каким-то образом устранить неоднозначность:

class window_w_input_and_menu : public virtual window, public window_w_input, public window_w_menu { void draw(); void get_input(); };

В этом классе window_w_input_and_menu::get_input() будет переопределять все функции get_input().

on_load_lecture()

Дальше »

  Если Вы заметили ошибку - сообщите нам.  

Страницы:

« |

1

|

2

|

3

|

4

|

5

|

6

|

7

|

8

|

9

|

10

|

вопросы | »

|

учебники

|

для печати и PDA


Курсы | Учебные программы | Учебники | Новости | Форум | Помощь



Телефон: +7 (495) 253-9312, 253-9313, факс: +7 (495) 253-9310, email: info@intuit.ru

© 2003-2007, INTUIT.ru::Интернет-Университет Информационных Технологий - дистанционное образование




- Начало -  - Назад -  - Вперед -