Статья: Производные Классы

class temporary : employee { ... };

class consultant : temporary { ... };

class director : manager { ... };

class vice_president : manager { ... };

class president : vice_president { ... };

Такое множество родственных классов принято называть иерархией классов. Поскольку можно выводить класс только из одного базового класса, такая иерархия является деревом и не может быть графом более общей структуры.

Например:

class temporary { ... };

class employee { ... };

class secretary : employee { ... };

// не C++:

class temporary_secretary : temporary : secretary { ... };

class consultant : temporary : employee { ... };

И этот факт вызывает сожаление, потому что направленный ациклический граф производных классов был бы очень полезен. Такие структуры описать нельзя, но можно смоделировать с помощью членов соответствующий типов.

Например:

class temporary { ... };

class employee { ... };

class secretary : employee { ... };

// Альтернатива:

class temporary_secretary : secretary

{ temporary temp; ... };

class consultant : employee

{ temporary temp; ... };

Это выглядит неэлегантно и страдает как раз от тех проблем, для преодоления которых были изобретены производные классы. Например, поскольку consultant не является производным от temporary, consultant"а нельзя помещать с список временных служащих (temporary employee), не написав специальной программы. Однако во многих полезных программах этот метод успешно используется.

Конструкторы и Деструкторы

Для некоторых производных классов нужны конструкторы. Если у базового класса есть конструктор, он должен вызываться, и если для этого конструктора нужны параметры, их надо предоставить.

Например:

class base {

// ...

К-во Просмотров: 584
Бесплатно скачать Статья: Производные Классы