fy">// також public і в Level1a.f = 2;. f0 ();. f1 ();
}
// Компонентні функцііLevel0 :: f0 () {//має доступ до всього Level0 = 1; = 2; = 3;
} Level1a :: f1 () {= 1;// доступу до a не має = 2; = 3;// має доступ до всього Level1a = 4; = 5; ();
}
У наступних приватних похідних класах L1.c і L1.f0 () зовнішньої функції fn () не доступні, оскільки вони є приватними, хоча L0.c і L0.f0 () продовжують залишатися доступними. Доступність компонентів для компонентних функцій f0 () і f1 () залишається незмінною. p> Level1b: private Level0 {: int d;: int e;: int f; f1 ();
}; Level1c: Level0 {//аналогічно Level1b: int d;: int e;: int f; f1 ();
};
// Загальна функціяfn () {L0; b L1;. c = 1;. f0 ();. f = 1;// доступу до L1.c або L1.f0 () тепер нет.f1 ();
}
Похідний клас може змінювати доступність компонентів базового класу. Однак похідний клас не може сам забезпечити собі доступ до компоненту, який йому недоступний через те, що базовий клас утворений як private, наприклад:
class Level1d: private Level0 {::: c;// конкретно оголошує змінну c як publicf; f1 ( );
};
// Загальна функціяfn () {L0; d L1;. c = 1;. f0 ();. c = 1;// доступ до c b> тепер можливий, але
// f0 залишається недоступной.f = 2;. f1 ();
}
При оголошенні Level1d як private-похідного умовчання для доступності змінної c змінюється з public на private. Однак, оголосивши спеціальним чином змінну c як public, замовчування можна перевизначити, роблячи L1.c доступною зі звичайної функції fn (). Level1d не може забезпечити сам собі доступ до компоненту a , який є приватним (private) в базовому класі.
. Конструктори похідних класів
Для деяких похідних класів потрібні конструктори. Якщо у базового класу є конструктор, він повинен викликатися при оголошенні об'єкта, і якщо у цього конструктора є параметри, їх необхідно надати. p align="justify"> Параметри конструктора базового класу зазначаються у визначенні конструктора похідного класу. Виклик конструктора базового класу слід безпосередньо після імені конструктора похідного класу, перед відкриває фігурною дужкою. p align="justify"> Level0 {: int a;: int b;: int c; f0 (); (int v0) {= b = c = v0;
}
}; Level1: public Level0 {: int d;: int e;: int f; f1 (); (int v0, int v1): Level0 (v0) {= e = f = v1;
}
};
// Загальна функціяfn () {L0 (1); L1 (1,2);