ВУЗ:
Составители:
Рубрика:
Когда полиморфные функции определены статически по иерар-
хии составных типов,поиск нужной функции при вызове произво-
дится компилятором в следующем порядке:
1.При вызове функции компилятор устанавливает тип объекта,
для которого вызывается эта функция.
2.Установив тип,компилятор ищет функцию в пределах этого
типа и, найдя ее здесь,компилятор назначает вызов этой функ-
ции.
3.Если указанная функция не найдена,то компилятор начинает
рассматривать его базовый тип и ищет в нем функцию,имя кото-
рой указано в вызове.В случае,если функция с таким именем
найдена и типы аргументов и параметров отождествляются,то
найденная функция вызывается.
4.Если же искомая функция отсутствует в базовом типе,то
компилятор переходит к следующему по иерархии базовому типу,
где и осуществляет дальнейший поиск.Процесс продолжается до
тех пор,пока вызванная функция не будет найдена,иначе компи-
лятор выдает сообщение об ошибке.
5.Если функция,найденная в рассматриваемой иерархии типов,
вызывает другие функции иерархии,то поиск этих функций будет
начинаться с места определения указанной функции в направле-
нии к родительским типам,даже если потомки имеют собственные
функции с такими же именами и параметрами.
Приведем примеры использования статического полиморфизма
функций:
class Location /*-базовый класс позиция: */
{ int x,y;/*-координаты точки экрана; */
public: /*-открытая часть класса: */
Location(int InitX,int InitY) /*-конструктор точки*/
{ x=InitX; /*-инициализация абсциссы; */
y=InitY; /*-инициализация ординаты; */
} /*-конец определения конструктора точки;*/
~Location() { } /*-пустой деструктор класса позиция;*/
int GetX() { return x; } /*-возвращает абсциссу; */
int GetY() { return y; } /*-возвращает ординату; */
void Print(){ cout<<"\nLocation";}
/*-печать имени класса; */
};/*-конец определения базового класса позиция; */
35
Когда полиморфные функции определены статически по иерар- хии составных типов,поиск нужной функции при вызове произво- дится компилятором в следующем порядке: 1.При вызове функции компилятор устанавливает тип объекта, для которого вызывается эта функция. 2.Установив тип,компилятор ищет функцию в пределах этого типа и, найдя ее здесь,компилятор назначает вызов этой функ- ции. 3.Если указанная функция не найдена,то компилятор начинает рассматривать его базовый тип и ищет в нем функцию,имя кото- рой указано в вызове.В случае,если функция с таким именем найдена и типы аргументов и параметров отождествляются,то найденная функция вызывается. 4.Если же искомая функция отсутствует в базовом типе,то компилятор переходит к следующему по иерархии базовому типу, где и осуществляет дальнейший поиск.Процесс продолжается до тех пор,пока вызванная функция не будет найдена,иначе компи- лятор выдает сообщение об ошибке. 5.Если функция,найденная в рассматриваемой иерархии типов, вызывает другие функции иерархии,то поиск этих функций будет начинаться с места определения указанной функции в направле- нии к родительским типам,даже если потомки имеют собственные функции с такими же именами и параметрами. Приведем примеры использования статического полиморфизма функций: class Location /*-базовый класс позиция: */ { int x,y;/*-координаты точки экрана; */ public: /*-открытая часть класса: */ Location(int InitX,int InitY) /*-конструктор точки*/ { x=InitX; /*-инициализация абсциссы; */ y=InitY; /*-инициализация ординаты; */ } /*-конец определения конструктора точки;*/ ~Location() { } /*-пустой деструктор класса позиция;*/ int GetX() { return x; } /*-возвращает абсциссу; */ int GetY() { return y; } /*-возвращает ординату; */ void Print(){ cout<<"\nLocation";} /*-печать имени класса; */ };/*-конец определения базового класса позиция; */ 35
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »