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