Ш1'" ^^'йршшмме на C++
г Щ|^мы йровхтирования
АИдрёй Александреску
. ' ;1^яиелввив Скотта Мейерса
TtimitiiliHbnniiuikM*beiui* влИССИДеСЭ
'/¦. ¦'¦'. "»'. ¦"•. '
Современное
проектирование на
Обобщенное программирование
и прикладные шаблоны проектирования
Андрей Александреску
Издательский дом "Вильяме"
Москва ¦ Санкт-Петербург ¦ Киев
2002
ББК 32. 973. 26-018. 2. 75
А46
УДК 681. 3. 07
Издательский дом "Вильяме"
Зав. редакцией А. В. Слепцов
Перевод с английского и редакция канд. физ. -мат. наук Д. А. А46 Современное проектирование на C++. Серия C++ In-Depth, т. 3. : Пер. с англ. — М. : Издательский дом "Вильяме", 2002. — 336 с. : ил. — Парал. тит. англ.
ISBN 5-8459-0351-3 (рус. )
В книге изложена новая технология программирования, представляющая собой
сплав обобщенного программирования, метапрограммирования шаблонов и объектно-
ориентированного программирования на C++. Обобщенные компоненты, созданные
автором, высоко подняли уровень абстракции, наделив язык C++ чертами языка спе-
спецификации проектирования, сохранив всю его мощь и выразительность. В книге изложены способы реализации основных шаблонов проектирования. Раз-
Разработанные компоненты воплощены в библиотеке Loki, которую можно загрузить с
Web-страницы автора. Книга предназначена для опытных программистов на C++. ББК 32. 973. 26-018. 2. 75
Все названия программных продуктов являются зарегистрированными торговыми марками
соответствующих фирм. Никакая часть настоящего издания ни в каких целях не может быть воспроизведена в какой
бы то ни было форме и какими бы то ни было средствами, будь то электронные или механиче-
механические, включая фотокопирование и запись на магнитный носитель, если на это нет письменного
разрешения издательства Addison-Wesley Publishing Company, Inc. Authorized translation from the English language edition published by Addison-Wesley Publishing
Company, Inc, Copyright ©2002
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any
means, electronic or mechanical, including photocopying, recording or by any information storage re-
retrieval system, without permission from the Publisher. Russian language edition published by Williams Publishing House according to the Agreement with
R&I Enterprises International, Copyright © 2002
ISBN 5-8459-0351-3 (рус. ) © Издательский дом "Вильяме", 2002
ISBN 0-201-77581-6 (англ. ) © Addison-Wesley Publishing Company, Inc
Оглавление
Часть I. Методы 23
Глава 1. Разработка классов на основе стратегий 25
Глава 2. Приемы программирования 45
Глава 3. Списки типов 71
Глава 4. Размещение в памяти небольших объектов 99
Часть II. Компоненты 119
Глава 5. Обобщенные функторы 121
Глава 6. Реализация шаблона Singleton 151
Глава 7. Интеллектуальные указатели 179
Глава 8. Фабрики объектов 217
Глава 9. Шаблон Abstract Factory 239
Глава 10. Шаблон Visitor 255
Глава 11.