Всего на сайте:
210 тыс. 306 статей

Главная | Механика

Region.Display();  Просмотрен 224

Однак зміни потрібно вносити в усю програму. Кращий варіант розв'язання проблеми – вивести новий клас з Base та замінити успадковану функцію-член Dispay() модифікованою версією.

Можна описати похідний клас таким чином:

class Region:public Base

{public:

Region (const char*s):Base(s){ }

void Display (void); //замiщувальна функцiя

};

Бачимо, що тут оголошена функція-член, абсолютно ідентична відповідній функції базового класу. При роботі це означає, що вона заміщує базову. Можемо реалізувати її так:

void Region::Display(void)

{cout<<"Region:";

Base.Display(); //виклик замiщеної функцiї-члена

};

Оголошення й використання об’єкта класу

Region region("Rivne");

Region.Display();

приведе до друку рядка "Region:Rivne".

Аналогічно можна вчинити i з конструкторами в похідних класах. Припустимо, що нам необхідно мати кілька класів з різними назвами областей. Можна написати клас для кожної області, подібний до такого:

class Rivne:public Region

{public:

Rivne():Region("Rivne"){}};

Новий конструктор похідного класу, оголошений без параметрів, передає рядок Rivne конструктору базового класу. Далі створюється об'єкт R і виводиться назва області (міста):

Rivne R;

Предыдущая статья:Class Base. {private: char*basep; public: Base(const char*s){basep=strdup(s);} .. Следующая статья:R.Display();
page speed (0.0131 sec, direct)