                                      Предисловие
           
                                           Язык формирует наш способ  мышления
                                        и определяет, о чем мы можем мыслить.
                                                                  - Б.Л. Ворф
           
             С++ - это универсальный язык  программирования,  задуманный  так,
           чтобы  сделать программирование более приятным для серьезного прог-
           раммиста.  За исключением второстепенных деталей С++ является надм-
           ножеством  языка программирования C.  Помимо возможностей,  которые
           дает C, С++ предоставляет гибкие и эффективные средства определения
           новых  типов.  Используя определения новых типов,  точно отвечающих
           концепциям приложения,  программист может разделять разрабатываемую
           программу на легко поддающиеся контролю части. Такой метод построе-
           ния программ часто называют абстракцией данных.  Информация о типах
           содержится в некоторых объектах типов,  определенных пользователем.
           Такие объекты просты и надежны в  использовании  в  тех  ситуациях,
           когда их тип нельзя установить на стадии компиляции. Программирова-
           ние с применением таких объектов часто называют объектно-ориентиро-
           ванным.  При  правильном использовании этот метод дает более корот-
           кие, проще понимаемые и легче контролируемые программы.
           
             Ключевым понятием С++ является класс. Класс - это тип, определяе-
           мый пользователем.  Классы обеспечивают сокрытие данных, гарантиро-
           ванную инициализацию данных,  неявное преобразование типов для  ти-
           пов, определенных пользователем, динамическое задание типа, контро-
           лируемое пользователем управление памятью  и  механизмы  перегрузки
           операций. С++ предоставляет гораздо лучшие, чем в C, средства выра-
           жения модульности программы и проверки типов.  В языке  есть  также
           усовершенствования,  не связанные непосредственно с классами, вклю-
           чающие в себя символические константы,  inline-подстановку функций,
           параметры функции по умолчанию, перегруженные имена функций, опера-
           ции управления свободной памятью и ссылочный тип.  В С++  сохранены
           возможности  языка  C  по  работе с основными объектами аппаратного
           обеспечения (биты,  байты,  слова,  адреса и т.п.).  Это  позволяет
           весьма эффективно реализовывать типы, определяемые пользователем.
           
             С++ и   его  стандартные  библиотеки  спроектированы  так,  чтобы
           обеспечивать переносимость.  Имеющаяся на текущий момент реализация
           языка  будет  идти в большинстве систем,  поддерживающих C.  Из С++
           программ можно использовать C библиотеки,  и с С++ можно  использо-
           вать  большую часть инструментальных средств,  поддерживающих прог-
           раммирование на C.
           
             Эта книга предназначена главным образом для  того,  чтобы  помочь
           серьезным  программистам изучить язык и применять его в нетривиаль-
           ных проектах.  В ней дано полное описание С++, много примеров и еще
           больше фрагментов программ.
           
                Благодарности
           
             С++ никогда бы не созрел без постоянного использования, предложе-
           ний и конструктивной критики со стороны многих друзей и коллег. Том
           Карджилл,  Джим Коплин,  Сту Фельдман,  Сэнди Фрезер, Стив Джонсон,
           Брайэн Керниган,  Барт Локанти,  Дуг МакИлрой,  Дэннис Риччи, Лэрри
           Рослер, Джерри Шварц и Джон Шопиро подали важные для развития языка
           идеи.  Дэйв Пресотто написал текущую реализацию библиотеки  потоков
           ввода/вывода.
           
             Кроме того, в развитие С++ внесли свой вклад сотни людей, которые
           присылали мне предложения  по  усовершенствованию,  описания  труд-
           ностей,  с которыми они сталкивались, и ошибки компилятора. Здесь я
           могу упомянуть лишь немногих из них:  Гэри Бишоп,  Эндрю Хьюм,  Том
           Карцес,  Виктор Миленкович, Роб Мюррэй, Леони Росс, Брайэн Шмальт и
           Гарри Уокер.
           
             В издании этой книги мне помогли многие люди,  в частности,  Джон
           Бентли,  Лаура Ивс,  Брайэн Керниган,  Тэд Ковальски,  Стив Махани,
           Джон Шопиро и участники семинара по С++,  который проводился в Bell
           Labs, Колумбия, Огайо, 26-27 июня 1985 года.
           
                                 Мюррэй Хилл, Нью Джерси Бьярн Страустрап
