Оголошення похідного класу вводить новий тип. Оголошення похідного класу встановлює обмеження доступу private, protected або public для членів свого базового класу. За замовчуванням встановлюється private.
Private – відкриті й захищені члени базового класу в похідному класі стають закритими.
Protected – відкриті й захищені члени базового класу в похідному класі стають захищеними.
Public – відкриті та захищені члени базового класу в похідному класі стають відкритими й захищеними відповідно.
Base | Derived | |
private | private | private |
protected | protected | |
public | public | |
protected | private | private |
protected | protected | |
public | public | |
public | private | private |
protected | protected | |
public | public |
Оголошення похідного класу повністю збігається з оголошенням звичайного класу, але, крім того, містить відділений двокрапкою список своїх базових класів з їхнім обмеженням доступу.
class PayPhone: public Phone
{
int centsDeposited;
public:
PayPhone(int area, int exchange, int line);
void GiveDialTone();
int AcceptCoins();
};
PayPhone booth(708, 533, 5444);
3. Функції-члени
Функції-члени в породжених класах можуть перекривати функції-члени базового класу з тим же ім’ям. Кількість і типи аргументів, а також тип значення, що повертається, функції-члена похідного класу можуть відрізнятися від кількості й типів аргументів і типу значення, що повертається, функції базового класу, яка перекривається.
Phone home(516, 555, 8858);
PayPhone booth(708, 533, 5444);
// ...
home.GiveDialTone(); // Phone::GiveDialTone();
booth.GiveDialTone(); // PayPhone::GiveDialTone();
Функції-члени похідного класу можуть викликати функції-члени базового класу, використовуючи операцію дозволу доступу.
void PayPhone::GiveDialTone()
{
// виконує щось особливе для PayPhone
Phone::GiveDialTone(); // виклик оригіналу
}