15.10.1. Еще раз о разрешении перегрузки функций

15.10.1. Еще раз о разрешении перегрузки функций

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

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

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

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Выбор функций

Из книги Getting Real (на русском) [вычитывается] автора 37signals

Выбор функций


Совет 46. Передавайте алгоритмам объекты функций вместо функций

Из книги Эффективное использование STL автора Мейерс Скотт

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


30. Избегайте перегрузки && , || и , (запятой)

Из книги Стандарты программирования на С++. 101 правило и рекомендация автора Александреску Андрей

30. Избегайте перегрузки &&, || и , (запятой) РезюмеМудрость — это знание того, когда надо воздержаться. Встроенные операторы &&, || и , (запятая) трактуются компилятором специальным образом. После перегрузки они становятся обычными функциями с весьма отличной


Вызов функций

Из книги HTML 5, CSS 3 и Web 2.0. Разработка современных Web-сайтов. автора Дронов Владимир

Вызов функций После объявления функции ее можно вызвать из любого Web-сценария, присутствующего на этой же Web-странице. Формат вызова функции:<имя функции>([<список фактических параметров, разделенных запятыми>])Здесь указывается имя нужной функции и в круглых


Вызовы функций

Из книги Язык программирования Си для персонального компьютера автора Бочков C. О.

Вызовы функций Синтаксис:<выражение> (<список-выражений>)Значением <выражения> должен быть адрес функции. В простейшем случае это идентификатор функции. <Список выражений> содержит выражения, разделенные запятыми. Значение каждого из этих выражений


Вызовы функций

Из книги Firebird РУКОВОДСТВО РАЗРАБОТЧИКА БАЗ ДАННЫХ автора Борри Хелен

Вызовы функций После установки Firebird содержит минимальный набор внутренних функций SQL. Хотя новые функции появляются время от времени, тем не менее сохраняется одно из основных достоинств Firebird: малый объем памяти, занимаемый сервером.Функциональные возможности сервера


19.6. Файл функций

Из книги Linux и UNIX: программирование в shell. Руководство разработчика. автора Тейнсли Дэвид

19.6. Файл функций После того, как будет создано несколько регулярно используемых функций, их можно поместить в файл функций, а затем загружать этой файл в среду интерпретатора shell.В начале файла функции должна находиться конструкция #!/bin/sh. Этому файлу можно присвоить любое


19.11.2. Вызов функций из файла функций

Из книги автора

19.11.2. Вызов функций из файла функций Мы уже рассматривали, каким образом функции вызываются из командной строки. Эти типы функций обычно используются утилитами, создающими системные сообщения.А теперь воспользуемся снова описанной выше функцией, но в этом случае


9.2. Три шага разрешения перегрузки

Из книги автора

9.2. Три шага разрешения перегрузки Разрешением перегрузки функции называется процесс выбора той функции из множества перегруженных, которую следует вызвать. Этот процесс основывается на указанных при вызове аргументах. Рассмотрим пример:T t1, t2;void f( int, int );void f( float, float );int


12.3.5. Адаптеры функций для объектов-функций

Из книги автора

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


15.11. Разрешение перегрузки и функции-члены A

Из книги автора

15.11. Разрешение перегрузки и функции-члены A * Функции-члены также могут быть перегружены, и в этом случае тоже применяется процедура разрешения перегрузки для выбора наилучшей из устоявших. Такое разрешение очень похоже на аналогичную процедуру для обычных функций и


15.12. Разрешение перегрузки и операторы A

Из книги автора

15.12. Разрешение перегрузки и операторы A В классах могут быть объявлены перегруженные операторы и конвертеры. Предположим, при инициализации встретился оператор сложения:SomeClass sc;int iobj = sc + 3;Как компилятор решает, что следует сделать: вызвать перегруженный оператор для


19.3. Разрешение перегрузки и наследование A

Из книги автора

19.3. Разрешение перегрузки и наследование A * Наследование классов оказывает влияние на все аспекты разрешения перегрузки функций (см. раздел 9.2). Напомним, что эта процедура состоит из трех шагов: Отбор функций-кандидатов.* Отбор устоявших функций.* Выбор наилучшей из