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