Void main(). cout<<a.foo()<<"\n";

{

A a;

B b;

cout<<a.foo()<<"\n";

cout<<b.foo()<<"\n";

}

 

Клас В має дві функції foo(). Одна успадкована від А, інша – власна. При пошуку потрібної функції компілятор перегляне дерево спадкування починаючи з дерева В та використовує "найближчу" до класу функцію.

У прикладі результат відповідно 1 та 2.

У даному випадку ім’я в базовому класі переоголошується в похідному класі. Це одне й те ж, що оголошення змінних у складових операторних блоках: кожний блок має свою версію змінних і внутрішні імена подавлюють зовнішні.

Але є і відмінності. У C++ можна примусити компілятора "бачити" за межами поточної області видимості Це робиться за допомогою оператора дозволу видимості. Загальна форма цього оператору така:

 

<ім’я класу> :: <ідентифікатор із класу>

 

Для того, щоб використовувати оператор дозволу видимості, модифікуємо клас В в такий спосіб:

 

class B: public A

{

public:

int foo() { return А::foo();}

};

 

Тепер виклик функції В::foo() приведе до виклику foo() класу А. Оператор дозволу видимості використовується не тільки усередині функції класу, але і при виклику функції:

 

Void main()

{

B b;

B * b1;

int x = b. A::foo();

int y = b1-> A::foo();

}

Використаннядозволу видимості після оператора "."








Дата добавления: 2014-12-26; просмотров: 666;


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

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.