ВУЗ:
Составители:
Рубрика:
1.4.3.Полиморфизм составных объектов
Помимо возможности описывать иерархическую структуру пред-
метной области с помощью аппарата производных типов,обеспечи-
вающих прозрачный,полупрозрачный и непрозрачный доступ к их
базовому типу,необходимо также иметь гибкие средства обработки
объектов,находящихся на различных уровнях этой иерархии - по-
лиморфных объектов.Для создания полиморфного объекта использу-
ются операторы присваивания или вызовы функций, работающие с
указателями или ссылками на составные типы:объект производного
типа при использовании его указателя или ссылки,можно рассмат-
ривать как объект его базового типа.Другими словами, если про-
изводный тип SymbolLocation имеет открытый базовый тип Locati-
on,то указатель или ссылку на SymbolLocation можно присваивать
переменной соответственно типа указатель или ссылка на Locati-
on,не используя явное преобразование типа.Аналогично,если про-
изводный тип SymbolLocation имеет открытый базовый тип Locati-
on,то указатель или ссылка на SymbolLocation можно передавать
в качестве аргумента параметру соответственно типа указатель
или ссылка на Location,точно так же не используя явное преоб-
разование типа.Обратное преобразование указателя или ссылки на
Location соответственно в указатель или ссылку на SymbolLoca-
tion должно быть явным.Такие присваивания и вызовы функций,как
правило,имеют место в связи с использованием виртуальных функ-
ций.
Приведем несколько примеров использования полиморфных объек-
тов,реализуемых указателями и ссылками в операторах присваива-
ния,а также в вызовах внешних функций Print(),параметрами ко-
торых являются соответственно указатель и ссылка на базовый
тип:
class Location /*-базовый класс позиция; */
{ int x,y;/*-координаты точки экрана: */
public: /*-открытая часть класса; */
Location(int InitX,int InitY)/*-конструктор точки;*/
{ x=InitX;/*-инициализация абсциссы; */
y=InitY;/*-инициализация ординаты; */
}/*-конец определения конструктора точки; */
40
1.4.3.Полиморфизм составных объектов Помимо возможности описывать иерархическую структуру пред- метной области с помощью аппарата производных типов,обеспечи- вающих прозрачный,полупрозрачный и непрозрачный доступ к их базовому типу,необходимо также иметь гибкие средства обработки объектов,находящихся на различных уровнях этой иерархии - по- лиморфных объектов.Для создания полиморфного объекта использу- ются операторы присваивания или вызовы функций, работающие с указателями или ссылками на составные типы:объект производного типа при использовании его указателя или ссылки,можно рассмат- ривать как объект его базового типа.Другими словами, если про- изводный тип SymbolLocation имеет открытый базовый тип Locati- on,то указатель или ссылку на SymbolLocation можно присваивать переменной соответственно типа указатель или ссылка на Locati- on,не используя явное преобразование типа.Аналогично,если про- изводный тип SymbolLocation имеет открытый базовый тип Locati- on,то указатель или ссылка на SymbolLocation можно передавать в качестве аргумента параметру соответственно типа указатель или ссылка на Location,точно так же не используя явное преоб- разование типа.Обратное преобразование указателя или ссылки на Location соответственно в указатель или ссылку на SymbolLoca- tion должно быть явным.Такие присваивания и вызовы функций,как правило,имеют место в связи с использованием виртуальных функ- ций. Приведем несколько примеров использования полиморфных объек- тов,реализуемых указателями и ссылками в операторах присваива- ния,а также в вызовах внешних функций Print(),параметрами ко- торых являются соответственно указатель и ссылка на базовый тип: class Location /*-базовый класс позиция; */ { int x,y;/*-координаты точки экрана: */ public: /*-открытая часть класса; */ Location(int InitX,int InitY)/*-конструктор точки;*/ { x=InitX;/*-инициализация абсциссы; */ y=InitY;/*-инициализация ординаты; */ }/*-конец определения конструктора точки; */ 40
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »