Class A.

{

protected:

int val;

};

 

class B: public A

{

public:

void FB();

};

 

class C: public B

{

public:

void FC();

};

Рис. 1. Ієрархія класів.

 

Властивість захищеності поширюється по дереву доти, поки похідна класу повідомляє свій базовий клас загальнодоступним. При цьому будь-яка функція-член у класах С або В може одержати доступ до захищеного члена даних val базового класу А. Наприклад, цілком допустимий такий код:

 

void B::FB()

{

val = 0;

}

 

void C::FC()

{

val = 0;

}

 

Якщо функція-член приймає вказівку або посилання на інший об’єкт, то правила вже інші. Розглянемо модифікований клас С:

 

class C: public B

{

public:

void FC(A&);

};

 

void C::FC(A&a)

{

val = 0; //доступ дозволений

a.val = 0; /*тут використовується посилання A&:

порушення прав доступу, може бути використаний

загальнодоступний інтерфейс класу А.*/

}

 

Доступ до val через посилання на об’єкт класу А не дозволений, незважаючи на те, що функція розташована усередині класу, породженого від А, що має доступ до захищених членів класу.

Докладно про захищені члени класу буде розглянуто в розділі 3 "Спадкування класів". Можна створювати об’єкти класу або вказівку на об’єкти класу в основній або динамічній пам’яті.

Приклад:

 








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


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

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

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

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