Алгоритм поиска оптимально отождествляемой функции для одного

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

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

2. Если могут быть два шаблона функции и один из них более специали-зирован, то на следующих этапах рассматривается только он (порядокспециализаций описан далее).

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

4. Если обычная функция и специализация подходят одинаково хорошо, то выбирается обычная функция.

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

Одиночное наследование. Правила наследования

Правила наследования

Наследование является одним из трех основных механизмов ООЯП. В ре-зультате использования механизма наследования осуществляется формирование иерархических связей между описываемыми типами. Тип-наследник уточняет базовый тип.

Алгоритм поиска оптимально отождествляемой функции для одного - student2.ru Прототип объявления типа-наследника:

structA {

intx,y;

};

structB: A {

intz;

};

A a1;

B b1;

b1.x = 1;

b1.y = 2;

b1.z = 3;

a1 = b1;

Объект типа Bнаследует свойства объекта типа A.

Таким образом, объект типа-наследника содержит внутри себя члены ба-зового типа:

Алгоритм поиска оптимально отождествляемой функции для одного - student2.ru

При наследовании наследуются не только информационные члены, но иметоды.

Не наследуются:

􀂃 Конструкторы

􀂃 Деструктор

􀂃 Операция присваивания

Как уже было описано, единственный способ использования конструктора

базового класса – список инициализации. Он записывается при описании кон-

структора производного класса:

Алгоритм поиска оптимально отождествляемой функции для одного - student2.ru

При создании объекта производного типа Bсначала будет вызван конст-руктор базового типа A. При

этом если конструктору базового типа нужны па-раметры, то его необходимо вызывать явно в списке инициализации. Затембудет вызван конструктор производного типа B.Деструкторы вызываются в обратном порядке. При разрушении объектапроизводного типа сначала будет вызван деструктор этого типа, а затем дест-руктор базового типа.Допустимо присвоение объекту базового типа объекта производного типа.При этом объекту базового типа будет присвоена та часть объекта производного

типа, которая структурно совпадает с базовым типом.

Наши рекомендации