ВУЗ:
Составители:
Рубрика:
Когда полиморфные функции определены статически по иерар-
хии составных типов,поиск нужной функции при вызове произво-
дится компилятором в следующем порядке:
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
- …
- следующая ›
- последняя »
