Д. Вандевурд, Н.М. Джосаттис - Шаблоны C++. Справочник разработчика (2003) (1160769), страница 92
Текст из файла (страница 92)
Первый контекст возникает, когда требуется адрес функции. Рассмотрим пример. Тпг п е1ешепсв(Маггех сопвга); // (1) 1пг п е1ешепгв(чесгог сопзга)! // (2) чо16 сошриге() ( Тпг (*ЕипсРСг)(чесгог сопвса) = п е1ешепсз; // Выбирается (2] Здесь имя п е1ешепсв обращается к набору перегрузки, однако необходим адрес только одной функции.
Затем разрешение перегрузки проверяет соответствие нужного типа функции (тип ешзсрс г в этом примере) одному из доступных кандидатов. Приложение Б. Разрешение перегрузки 516 Другой контекст, который требует разрешения перегрузки, — это инициализация. К сожалению, в этой теме есть масса тонкостей, которые невозможно охватить в данном приложении. Тем не менее приведем простой пример, который хотя бы проиллюстрирует этот дополнительный аспект разрешения перегрузки.
()1пс1ис)е <всг1пд> с1авв Вйде)ша ( риЬ11с: Вйдыцга(1опд п)г Вйдышп(с)оиЬ1е п)г ВйдИоза(вес): гвсгйпд сопвса); орекагот с)оцЬ1е()> оретат~бг 1опд(); чоМ 1п1СВето() ( ВйдЖла Ьп1(100103); Вйдышп Ьп2 ( "7057103224. 095764" ); 1пе 1п = Ьп1; ) В этом примере разрешение перегрузки необходимо для выбора соответствующего конструктора или оператора преобразования. В подавляющем большинстве случаев правила перегрузки дают интуитивно понятный результат. Тем не менее подробности этих правил довольно сложны и некоторые приложения основаны на менее понятных принципах этой области языка С++ (например, класс всг) г: аисо рог).
Библиография В этом приложении перечислены все информационные ресурсы, упомянутые в данной книге. Немалая часть информации о современных достижениях в области программирования доступна только в электронном виде, так что не удивляйтесь обилию различных %еЪ-узлов, перечисленных наряду с традиционными книгами и статьями.
Мы не претендуем на полноту и завершенность представленного здесь списка, но все перечисленное в нем тем или иным образом имеет отношение к тематике нашей книги. %еЪ-узлы гораздо более изменчивы, чем книги и статьи, а потому указанные здесь ссылки могут оказаться недействительными.
Поэтому мы приняли решение поддерживать обновляемый список ссылок на узле по адресу: Ъс ср: / /ьат». Э о в па с 1 в . созп/ сгпр1ЬооК. Прежде чем перейти к книгам, статьям и %еЪ-узлам, перечислим интерактивные ресурсы информации, а именно группы новостей. Группы новостей Многие современные технологии, о которых идет речь в данной книге, были впервые упомянуты в группах новостей, посвященных С++.
В ряде случаев такие технологии оказались плодом коллективного творчества участников дискуссий. Приведем небольшой список групп новостей, посвященных С++. ° Изучение С++ (немодерируемая): а1с. сопр. 1апд. 1еакп. с-с++ ° Общие вопросы С++ (немодерируемая): с оп р . 1апд. с++ ° Общие вопросы С++ (модерируемая): сдпр. 1апд. с++ . шобегасеб ° Вопросы стандарта С++ (модерируемая): совр . вас). с++ Если у вас нет доступа к серверу групп новостей, можете воспользоваться архивом по адресу: Ъкср: //дгопрв.
доод1е. соль Книги и %еЬ-узлы 1. Апбге! А!ехапдгезсш Мос(его С++ Вез!ул. — Кеаб!пя, МА: Адб!зоп-%ез1еу, 2001. (Русский перевод: Александреску А. Современное проектирование на С++. — М.: Издат. дом "Вильямс", 2002). 2. Мапйев Н. Апзгепь Оеаег!с Ргодгатт(ая алй гас оТ1, — Кеайпя, МА: А<И! зопЖез! еу, 1999. 518 Библиография 3. 1егегпу Б!е!с ТЬе Воояг Солсерг СЬес)г !.!Ьгагу. Ьсср://ююзг.Ьоовс.огд/11Ьв/сопсерс сЬес!с/сопсерс сЬес!с.Ьсаз 4. ТогЫ Че!6Ьп!яеп. В!!зх++." .ОЬ)ест-Ог!елгег! Бс!еюфс Сотриг!л8. Ьппр://члззт.оопптегйсв.огд/Ь11пг 5. ТЬе Воозг Веров!гогу~от Ргее, Реет-Ееиентег! С++ !зЬгаПез. Ьсср://члзи.Ьоовс.огд 6 Воозг Сотрозе ПЬгагу.
Ьскр: //юмю. Ьоовс . огд/11Ьв/соарове 7. Бтатг Ро!тет !зЬгагу. Ьсар: //ьлги. Ьоовс . огд/11Ьв/вазагс рсг 8. ТуреТга!ззУЬтату. Ьсср://члпн.Ьоовс.огд/11Ьв/суре сга1св 9. Топя Сагй!!!. Ексерйол Наля!!!л8т А рабе Бете о/'Бесит!гу П С++ Верон. — ЪочетЬетОесетЬег 1994. Доступно по адресу: Ькср: //юючт. аыргобеввйопа1. совз/ теуегвсййеп~6/бевзо/азадаявпе/Ьпйех.Ьсаз 10.
!апзев О. Сорйеп. Сипоиз!у Еесигплл ТетрЬие Рааеглз В С++ Верою. — Рейгпазу 1995. 11. Соте !зяие !)5 о/гЬе С++ Бгалг!ал!. Ьсср: //апыЬ1в . с!!спид. 6!с/ ! со 1/вс22/ыд21/йоса/сюд кос . Ьсв1 12. Кгаувя!о! СвагпесЫ, !)!псЫЧ. Е!вепес1сег. Сел егаг!че Ргойгаттш8. — Кеайпй, МА з Абйвоп-%ев!еу, 2000. 13. Епсй бапппа, К!сйагб Не!пз, Ва!РЬ )ойпвоп, !ойп Ч!!ввЫев. Вез!Бл Ралегля. — Веаб!пй, МА: Адйвоп-1Чев!еу, 1995. 14. Ейвоп !уев!8п бгопр. Сотр!!ег Ргот Елг!я~от зйе ОЕМ Магйеп Ьсср://юная.ес!д.сов 15. Магйаге! А. ЕП!в, В)агпе 8!гоня!гнр. ТЬе Аллогасед С++ Ее~егелсе Мании! (АЯМ).— Кеайпй, МА: АзЫ!воп-%/ев!еу, 1990. 16.Ы!со!а!М.!овпи!в.
анко рсгаля!апсо рсг ген. Ьсср://ьнеи.3овпссйв.сов/11ЬЬоо!с/аппо рсг.ЬКв1 17. Ьйсо!т М. 1овнп!в. ОЬ)еспОПетег! РгоБгаттш8 Ы С++. — )ойп%йеу апг! Яопв ЕЫ, 2002. 18. Бйсо1а! М. )овпп!в. ТЬе С++ Бгалдагг! ИЬгату. — Веайпй, МА: АгЫ!воп-Ч/ев1еу, 1999. 19. Апдгезч Коеп!8, ВагЬэха Е. Моо. Ассе!егагеВ С++. — Кеайпй, МА: АсЫ!воп-%~ее!еу, 2000. (Русский перевод: Кбниг Э., Му Б.Э. Эффективное программирование на С++. — М.: Издат. дом "Вильямс", 2002.) 20. УааЫсо )дг и', бату Ратей. П„ТЬе ЬатЬг!а ИЬгагу. Ьсср://чали.Ьоовс.огд/11Ьв/1авЬг!а/оос 21. Бзап1еу В.1.!рртап. )лзй!е зЬе С++ ОЬ!ест Мог)е!. — Веайпй, МА: Аз!йвоп-%ев!еу, 1996. 22.
Ясоп Меуегв. Соилйлл ОЬ)естя !л С++ !! С/С++ !)вега !опгпа!. — Арп! 1998. 23. Зсои Меуегв. Е)уесг!че С++. 50 Брег!Вс Хауз го )тргоче Уоиг Ргоягатз алВ Вез/Бл !2лВ ЕйгтЬл). — Кеайпй, МА: Аг!йвоп-%1ев!еу, 1998 24. Боои Меуегв. Моте Енес!!че С++. 35 Незя Фауя то !трточе хоиг Ргоягатя алВ Реиялз. — Веайпй, МА: Аоо!воп-Ч/ев!еу, 1996. Книги и %еЬ-узлы 519 25. Апдгеш Ешпвда!пе, 1егешу 8!е1с.
МТЬ, ТЬе Матти Тетр!аге !лЬгагу. Ьссрг//ыим.ов1.1и.ес1и/хевеатсЬ/вс2 26. 13.К. Мпввег, С. %апй. Оупат!с )Гетвзсаг!ол о/' С++ бепеПс А18оНУЬтз Л ГЕЕЕ Тгапь. оп Зойтаге Епй!пеег!п8. — 1997. — Чо1. 23, Хо. 5. 27. Ыа!Ьап С. Муегв. Тга1м: А Ыезт алй Уверя! ТетрЬие ТесЬпй)ие. Ьсср://ьппе.сапптхр.охд/пса!.св.Ьсш2 28. КоЬегт 13ач!ев.
НезтМаг! О, А Магг!х (лЬгагу !л С++. Ьтпр://ьпзи.тсЬехппа.сопг/пм хпсхс.Ьсш 29. 1.ев1!е Вгони, ег а1. 77ге Незт ББогтег Ох/огд Еп81!зЬ Р)сйопагу (/оизтЬ ег!!г!ол).— Ох(огд: Ох!огд Уп!четв!Гу Ргевв, 1993. 30. РООМА: А Н18Ь-Рег/оттпапсе С++ Тоо))г!г/ог Рагайе( Бс!елгфс Сотршайоп. Ьстрг//ыиы.роома.сога 31. 180. 1п/огтаг!оп Тесйпо1о8у — Рголгатт!л8 (.ал8иа8ез — С++. 1)осшпепг ХшпЬег КОЛЕС 14882-1998, 180ЛЕС, 1998.
32. 180. !л/огпшг!оп Тесйпо(олу — Рголгатт!л8 1.ал8иаяез — С++ (аз Ателг!ег! Ьу гЬеЛтзг геслтса1 оотг!8елг(ит). Ооспшепг ХпшЬег 180ЛЕС 14882-2002, КОЛЕС, 2002. 33. В)агпе Биопвппр. ТЬе С++ Рто8гатт!л8 Еап8иале, Брес/а! ег!. — Кеайпй, МА: Аййвоп-%ев!еу, 2000. 34. В)вгпе Бпопвппр. 77ге Вещи апг( Ето1иг!оп о/'С++. — Кеайпй, МА: Аз(йвоп-%ев!еу, 1994 35. В)агпе Япопвггпр. В/агпе Еггоиитир'з С++ С)оззагу.
Ьтсрг//ъэм.гевеагсЬ.асс.соаг/-Ьв/д2овваху.Ьпм3 36. НегЬ Япггег. Ехсерйопа! С++. 47 Епя!пеепп8 Ригх!ез, Рго8гатт!л8 РгоЫепи, апз( 5о1иг!олз. — Кеайпй, МА: Адйвоп-%ев!еу, 2000. (Русский перевод: Саттер Г. Решение сложных задач на С++. — М.: Издат. дом "Вильямс", 2002.) 37. НегЬ Япггег. Моте Ехсерйопа! С++.
40 Неге Ел8!пеет!л8 Ригз)ез, Рго8тапип!л8 РгоЫетз, апз! Яо)ийопв — Кеайпй, МА: Абйвоп-зл'ев1еу, 2001. (Русский перевод: Саттер Г. Решение сложных задач на С++. — М.: Издат. дом "Вильямс", 2002.) 38. Епч!п УпгпЬ. Ог!8!па! Мегарго8гат/ог Рпте НитЬег Сотриниюл. Ьслр://ичпз.етызп-ипхиЬ.г1е/рх1агох1д.Ьсш2 39. Эач!д Чапдечоогде. С++ Бо1иполз. — Кеад!пй, МА: АсЫ!воп-%еа!еу, 1998. 40. ТосЫ Че!дЬшхеп. Юз!л8 С++ Тетр)аге Мегарго8гапи 11 С++ Керогг. — Мау 1995. 41. Тодд Че1ЙЬп!хеп. ТогЫ )/е)г)Ьи!хеп'з Рарегз алг)Агт!с!ез аЬош Оепепс Рто8гатт!п8 апг! Тетр1агез. Ьс ар г //о в 3 .
зи. е с!и/-сзте 2г)Ьих/рарехв Глоссарий Абстрактный класс Класс, для которого невозможно создание конкрет- ных объектов (экземпляров). Абстрактные классы могут использоваться для обьединения общих свойств различных классов в одном типе либо для определения полиморфного интерфейса Поскольку абстрактные классы используются в качестве базо- вых, зачастую употребляется аббревиатура АВС, озиачакяцая абгггас! Ьлге с(ага (абстрактный базо- вый квасе) Аббревиатура от агяителг г(ерелг(ел! 1оойир (поиск, зависящий от аргументов). А01.
пред- ставляет собой процесс поиска имени функции (или оператора) в пространствах имен и классах, тем или иным способом связанных с аргумента- ми вызова функции, в котором упоминается дан- ная функция или оператор. По историческим причинам иногда называется расигиренкым по- иском Кекига (или просто поиском Кенига; дан- ное название применимо в основном к поиску имен операторов) Нестандартная способность компилятора вос- принимать два последовательных символа > как две закрывающие угловые скобки (хотя обычно они должны быть разделены пробелом).