Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

c++book1

.pdf
Скачиваний:
10
Добавлен:
17.02.2016
Размер:
2.12 Mб
Скачать

Учебник по C++. Отредактирован 17.01.05.

Скачан с сайта http://bizkit.land.ru

 

 

 

Бьярн Страустрап, 1995

Введение в язык C++.

Скачан с http://bizkit.land.ru

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

Оглавление.

ПРЕДИСЛОВИЕ_____________________________________________________________9

ЗАМЕТКИ ДЛЯ ЧИТАТЕЛЯ _____________________________________________________10 СТРУКТУРА ЭТОЙ КНИГИ _____________________________________________________10 ЗАМЕЧАНИЯ ПО РЕАЛИЗАЦИИ _________________________________________________11 УПРАЖНЕНИЯ ______________________________________________________________11 ЗАМЕЧАНИЯ ПО ПРОЕКТУ ЯЗЫКА_______________________________________________12 ИСТОРИЧЕСКИЕ ЗАМЕЧАНИЯ __________________________________________________13 ЭФФЕКТИВНОСТЬ И СТРУКТУРА ________________________________________________14 ФИЛОСОФСКИЕ ЗАМЕЧАНИЯ __________________________________________________16 РАЗМЫШЛЕНИЯ О ПРОГРАММИРОВАНИИ НА С++ __________________________________16 ПРАВИЛА ПРАВОЙ РУКИ* ____________________________________________________18 ЗАМЕЧАНИЯ ДЛЯ ПРОГРАММИСТОВ НА C ________________________________________19 БИБЛИОГРАФИЧЕСКИЕ ССЫЛКИ ________________________________________________19

ГЛАВА 1 ТУРНЕ ПО С++____________________________________________________21

1.1ВВЕДЕНИЕ ______________________________________________________________21

1.1.1Вывод _____________________________________________________________21

1.1.2Компиляция ________________________________________________________22

1.1.3Ввод _______________________________________________________________22

1.2КОММЕНТАРИИ __________________________________________________________23

1.3ТИПЫ И ОПИСАНИЯ ______________________________________________________24

1.3.1Основные Типы _____________________________________________________24

1.3.2Производные Типы___________________________________________________25

1.4ВЫРАЖЕНИЯ И ОПЕРАТОРЫ ________________________________________________26

1.4.1Выражения_________________________________________________________26

1.4.2Операторы Выражения ______________________________________________27

1.4.3Пустой оператор ___________________________________________________27

1.4.4Блоки ______________________________________________________________27

1.4.5Оператор if ________________________________________________________28

1.4.6Операторы switch ___________________________________________________28

1.4.7Оператор while _____________________________________________________29

1.4.8Оператор for _______________________________________________________30

1.4.9Описания___________________________________________________________30

1.5ФУНКЦИИ ______________________________________________________________30

1.6СТРУКТУРА ПРОГРАММЫ __________________________________________________32

1.7КЛАССЫ _______________________________________________________________33

1.8ПЕРЕГРУЗКА ОПЕРАЦИЙ ___________________________________________________35

1.9ССЫЛКИ _______________________________________________________________36

1.10КОНСТРУКТОРЫ ________________________________________________________37

1.11ВЕКТОРА ______________________________________________________________38

1.12INLINE-ПОДСТАНОВКА ___________________________________________________39

1.13ПРОИЗВОДНЫЕ КЛАССЫ __________________________________________________40

1.14ЕЩЕ ОБ ОПЕРАЦИЯХ _____________________________________________________42

1.15ДРУЗЬЯ (FRIEND) ________________________________________________________44

1.16ОБОБЩЕННЫЕ ВЕКТОРА __________________________________________________44

1.17ПОЛИМОРФНЫЕ ВЕКТОРА_________________________________________________45

2

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

1.18 ВИРТУАЛЬНЫЕ ФУНКЦИИ_________________________________________________46

ГЛАВА 2 ОПИСАНИЯ И КОНСТАНТЫ ______________________________________48

2.1ОПИСАНИЯ _____________________________________________________________48

2.1.1Область Видимости _________________________________________________49

2.1.2Объекты и Адреса (Lvalue) ___________________________________________51

2.1.3Время Жизни _______________________________________________________51

2.2ИМЕНА ________________________________________________________________52

2.3ТИПЫ__________________________________________________________________53

2.3.1Основные Типы _____________________________________________________53

2.3.2Неявное Преобразование Типа _________________________________________55

2.3.3Производные Типы___________________________________________________55

2.3.4Тип void ____________________________________________________________56

2.3.5Указатели__________________________________________________________57

2.3.6Вектора ___________________________________________________________58

2.3.7Указатели и Вектора ________________________________________________60

2.3.8Структуры_________________________________________________________61

2.3.9Эквивалентность типов______________________________________________63

2.3.10Ссылки ___________________________________________________________64

2.3.11Регистры _________________________________________________________67

2.4КОНСТАНТЫ ____________________________________________________________67

2.4.1Целые Константы __________________________________________________67

2.4.2Константы с Плавающей Точкой ______________________________________68

2.4.3Символьные Константы _____________________________________________68

2.4.4Строки ____________________________________________________________69

2.4.5Ноль_______________________________________________________________70

2.4.6Const ______________________________________________________________71

2.4.7Перечисления _______________________________________________________72

2.5ЭКОНОМИЯ ПРОСТРАНСТВА ________________________________________________73

2.5.1Поля_______________________________________________________________73

2.5.2Объединения________________________________________________________74

2.6УПРАЖНЕНИЯ ___________________________________________________________76

ГЛАВА 3 ВЫРАЖЕНИЯ И ОПЕРАТОРЫ _____________________________________78

3.1НАСТОЛЬНЫЙ КАЛЬКУЛЯТОР _______________________________________________78

3.1.1Программа синтаксического разбора ___________________________________78

3.1.2Функция ввода ______________________________________________________83

3.1.3Таблица имен _______________________________________________________86

3.1.4Обработка ошибок __________________________________________________88

3.1.5Драйвер ____________________________________________________________88

3.1.6Параметры командной строки ________________________________________89

3.2КРАТКАЯ СВОДКА ОПЕРАЦИЙ _______________________________________________90

3.2.1Круглые скобки _____________________________________________________92

3.2.2Порядок вычисления _________________________________________________93

3.2.3Увеличение и уменьшение* ____________________________________________93

3.2.4Побитовые логические операции _______________________________________94

3.2.5Преобразование типа ________________________________________________95

3.2.6Свободная память___________________________________________________97

3.3СВОДКА ОПЕРАТОРОВ ____________________________________________________100

3.3.1Проверки __________________________________________________________101

3.3.2Goto ______________________________________________________________103

3.4КОММЕНТАРИИ И ВЫРАВНИВАНИЕ _________________________________________104

3.5УПРАЖНЕНИЯ __________________________________________________________106

3

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

ГЛАВА 4 ФУНКЦИИ И ФАЙЛЫ ____________________________________________109

4.1ВВЕДЕНИЕ _____________________________________________________________109

4.2КОМПОНОВКА __________________________________________________________110

4.3ЗАГОЛОВОЧНЫЕ ФАЙЛЫ__________________________________________________112

4.3.1Один Заголовочный Файл ____________________________________________113

4.3.2Множественные Заголовочные Файлы_________________________________116

4.3.3Сокрытие Данных __________________________________________________118

4.4ФАЙЛЫ КАК МОДУЛИ ____________________________________________________119

4.5КАК СОЗДАТЬ БИБЛИОТЕКУ _______________________________________________120

4.6ФУНКЦИИ _____________________________________________________________121

4.6.1Описания Функций__________________________________________________121

4.6.2Определения Функций _______________________________________________122

4.6.3Передача Параметров ______________________________________________122

4.6.4Возврат Значения __________________________________________________123

4.6.5Векторные Параметры _____________________________________________124

4.6.6Параметры по Умолчанию___________________________________________126

4.6.7Перегрузка Имен Функций ___________________________________________127

4.6.8Незаданное Число Параметров _______________________________________129

ГЛАВА 5 КЛАССЫ ________________________________________________________130

5.1ЗНАКОМСТВО И КРАТКИЙ ОБЗОР ___________________________________________130

5.2КЛАССЫ И ЧЛЕНЫ_______________________________________________________131

5.2.1Функции Члены ____________________________________________________131

5.2.2Классы ___________________________________________________________132

5.2.3Ссылки на Себя ____________________________________________________133

5.2.4Инициализация _____________________________________________________135

5.2.5Очистка __________________________________________________________136

5.2.6Inline _____________________________________________________________137

5.3ИНТЕРФЕЙСЫ И РЕАЛИЗАЦИИ _____________________________________________138

5.3.1Альтернативные Реализации _________________________________________138

5.3.2Законченный Класс _________________________________________________141

5.4ДРУЗЬЯ И ОБЪЕДИНЕНИЯ _________________________________________________145

5.4.1Друзья ____________________________________________________________145

5.4.2Уточнение* Имени Члена____________________________________________147

5.4.3Вложенные Классы _________________________________________________147

5.4.4Статические Члены ________________________________________________149

5.4.5Указатели на Члены ________________________________________________149

5.4.6Структуры и Объединения __________________________________________150

5.5КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ ___________________________________________153

5.5.1Предостережение __________________________________________________153

5.5.2Статическая Память_______________________________________________154

5.5.3Свободная Память _________________________________________________155

5.5.4Объекты Класса как Члены __________________________________________155

5.5.5Вектора Объектов Класса ___________________________________________158

5.5.6Небольшие Объекты ________________________________________________159

5.5.7Предостережение __________________________________________________160

5.5.8Объекты Переменного Размера ______________________________________161

5.6УПРАЖНЕНИЯ __________________________________________________________162

ГЛАВА 6 ПЕРЕГРУЗКА ОПЕРАЦИЙ ________________________________________164

6.1ВВЕДЕНИЕ _____________________________________________________________164

6.2ФУНКЦИИ ОПЕРАЦИИ ____________________________________________________165

4

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

6.2.1Бинарные и Унарные Операции _______________________________________165

6.2.2Предопределенный Смысл Операций___________________________________166

6.2.3Операции и Определяемые Пользователем Типы ________________________167

6.3ОПРЕДЕЛЯЕМОЕ ПОЛЬЗОВАТЕЛЕМ ПРЕОБРАЗОВАНИЕ ТИПА______________________167

6.3.1Конструкторы_____________________________________________________168

6.3.2Операции Преобразования ___________________________________________169

6.3.3Неоднозначности __________________________________________________170

6.4КОНСТАНТЫ ___________________________________________________________172

6.5БОЛЬШИЕ ОБЪЕКТЫ _____________________________________________________172

6.6ПРИСВАИВАНИЕ И ИНИЦИАЛИЗАЦИЯ________________________________________173

6.7ИНДЕКСИРОВАНИЕ ______________________________________________________175

6.8ВЫЗОВ ФУНКЦИИ _______________________________________________________177

6.9КЛАСС STRING _________________________________________________________178

6.10ДРУЗЬЯ И ЧЛЕНЫ_______________________________________________________181

6.11ПРЕДОСТЕРЕЖЕНИЕ ____________________________________________________182

6.12УПРАЖНЕНИЯ _________________________________________________________183

ГЛАВА 7 ПРОИЗВОДНЫЕ КЛАССЫ________________________________________186

7.1ВВЕДЕНИЕ _____________________________________________________________186

7.2ПРОИЗВОДНЫЕ КЛАССЫ __________________________________________________187

7.2.1Построение Производного Класса ____________________________________187

7.2.2Функции Члены ____________________________________________________188

7.2.3Видимость ________________________________________________________190

7.2.4Указатели_________________________________________________________191

7.2.5Иерархия Типов ____________________________________________________192

7.2.6Конструкторы и Деструкторы ______________________________________193

7.2.7Поля Типа _________________________________________________________194

7.2.8Виртуальные Функции ______________________________________________195

7.3АЛЬТЕРНАТИВНЫЕ ИНТЕРФЕЙСЫ ___________________________________________197

7.3.1Интерфейс ________________________________________________________198

7.3.2Реализация ________________________________________________________198

7.3.3Как Этим Пользоваться ____________________________________________200

7.3.4Обработка Ошибок_________________________________________________202

7.3.5Обобщенные Классы ________________________________________________203

7.3.6Ограниченные Интерфейсы __________________________________________205

7.4ДОБАВЛЕНИЕ К КЛАССУ __________________________________________________206

7.5НЕОДНОРОДНЫЕ СПИСКИ_________________________________________________207

7.6ЗАКОНЧЕННАЯ ПРОГРАММА _______________________________________________208

7.6.1Администратор Экрана _____________________________________________208

7.6.2Библиотека Фигур __________________________________________________210

7.6.3Прикладная Программа _____________________________________________214

7.7СВОБОДНАЯ ПАМЯТЬ ____________________________________________________215

7.8УПРАЖНЕНИЯ __________________________________________________________217

ГЛАВА 8 ПОТОКИ ________________________________________________________219

8.1ВВЕДЕНИЕ _____________________________________________________________219

8.2ВЫВОД _______________________________________________________________220

8.2.1Вывод Встроенных Типов ____________________________________________220

8.2.2Вывод Определяемых Пользователем Типов ____________________________221

8.2.3Некоторые Подробности Разработки _________________________________222

8.2.4Форматированный Вывод ___________________________________________223

8.2.5Виртуальная Функция Вывода ________________________________________226

8.3ФАЙЛЫ И ПОТОКИ ______________________________________________________227

5

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

8.3.1Инициализация Потоков Вывода______________________________________227

8.3.2Закрытие Потоков Вывода __________________________________________228

8.3.3Открытие Файлов _________________________________________________228

8.3.4Копирование Потоков_______________________________________________229

8.4ВВОД _________________________________________________________________229

8.4.1Ввод Встроенных Типов _____________________________________________230

8.4.2Состояния Потока _________________________________________________231

8.4.3Ввод Типов, Определяемых Пользователем _____________________________232

8.4.4Инициализация Потоков Ввода _______________________________________233

8.5РАБОТА СО СТРОКАМИ ___________________________________________________235

8.6БУФЕРИЗАЦИЯ __________________________________________________________235

8.7ЭФФЕКТИВНОСТЬ _______________________________________________________237

8.8УПРАЖНЕНИЯ __________________________________________________________237

СПРАВОЧНОЕ РУКОВОДСТВО ____________________________________________239

1.ВВЕДЕНИЕ ______________________________________________________________239

2.ДОГОВОРЕННОСТИ О ЛЕКСИКЕ ______________________________________________239

2.1Комментарии _______________________________________________________239

2.2Идентификаторы (Имена) ____________________________________________239

2.3Ключевые Слова _____________________________________________________239

2.4Константы _________________________________________________________240

2.4.1Целые Константы ________________________________________________240

2.4.2Явно Заданные Длинные Константы_________________________________240

2.4.3Символьные Константы ___________________________________________240

2.4.4Константы с Плавающей Точкой ____________________________________241

2.4.5Перечислимые Константы _________________________________________241

2.4.6Описанные Константы ____________________________________________241

2.5Строки_____________________________________________________________241

2.6Харктеристики Аппаратного Обеспечения ______________________________241

3.ЗАПИСЬ СИНТАКСИСА ____________________________________________________242

4.ИМЕНА И ТИПЫ__________________________________________________________242

4.1Область Видимости _________________________________________________242

4.2Определения ________________________________________________________243

4.3Компоновка _________________________________________________________243

4.4Классы Памяти _____________________________________________________243

4.5Основные Типы ______________________________________________________244

4.6Производные Типы ___________________________________________________244

5.ОБЪЕКТЫ И LVALUE ДРЕСА) ______________________________________________245

6.ПРЕОБРАЗОВАНИЯ________________________________________________________245

6.1Символы и Целые ____________________________________________________245

6.2Float и Double _______________________________________________________246

6.3Плавающие и Целые __________________________________________________246

6.4Указатели и Целые___________________________________________________246

6.5Unsigned____________________________________________________________246

6.6Арифметические Преобразования ______________________________________247

6.7Преобразования Указателей ___________________________________________247

6.8Преобразования Ссылок_______________________________________________247

7.ВЫРАЖЕНИЯ ____________________________________________________________248

7.1Основные Выражения ________________________________________________248

7.2Унарные Операции ___________________________________________________250

7.2.1Увеличение и Уменьшение_________________________________________251

7.2.2Sizeof ___________________________________________________________252

6

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

7.2.3Явное Преобразование Типа _______________________________________252

7.2.4Свободная Память ________________________________________________252

7.3Мультипликативные Операции ________________________________________253

7.4Аддитивные Операции ________________________________________________254

7.5Операции Сдвига_____________________________________________________254

7.6Операции Отношения ________________________________________________255

7.7Операции Равенства _________________________________________________255

7.8Операция Побитовое И _______________________________________________255

7.9Операция Побитовое Исключающее ИЛИ _______________________________255

7.10Операция Побитовое Включающее ИЛИ________________________________256

7.11Операция Логическое И ______________________________________________256

7.12Операция Логическое ИЛИ ___________________________________________256

7.13Условная Операция __________________________________________________256

7.14Операции Присваивания _____________________________________________257

7.15Операция Запятая __________________________________________________257

7.16Перегруженные Операции____________________________________________257

7.16.1Унарные Операции ______________________________________________258

7.16.2Бинарные Операции _____________________________________________258

7.16.3Особые Операции _______________________________________________258

8.ОПИСАНИЯ _____________________________________________________________258

8.1Спецификаторы Класса Памяти _______________________________________259

8.2Спецификаторы Типа ________________________________________________260

8.3Описатели __________________________________________________________261

8.4Смысл описателей ___________________________________________________262

8.4.1Примеры ________________________________________________________264

8.4.2Массивы, Указатели и Индексирование ______________________________265

8.5Описания Классов ____________________________________________________266

8.5.1Статические Члены _______________________________________________267

8.5.2Функции Члены __________________________________________________268

8.5.3Производные Классы _____________________________________________269

8.5.4Виртуальные Функции ____________________________________________270

8.5.5Конструкторы ___________________________________________________270

8.5.6Преобразования __________________________________________________271

8.5.7Деструкторы_____________________________________________________272

8.5.8Свободная Память ________________________________________________272

8.5.9Видимость Имен Членов___________________________________________273

8.5.10Друзья _________________________________________________________273

8.5.11Функция Операция ______________________________________________274

8.5.12Структуры _____________________________________________________275

8.5.13Объединения ___________________________________________________275

8.5.14Поля Бит _______________________________________________________275

8.5.15Вложенные Классы ______________________________________________276

8.6Инициализация ______________________________________________________276

8.6.1Список Инициализаторов __________________________________________277

8.6.2Объекты Классов _________________________________________________278

8.6.3Ссылки _________________________________________________________279

8.6.4Массивы Символов _______________________________________________279

8.7Имена Типов ________________________________________________________280

8.8Typedef - Определение Типа ____________________________________________280

8.9Перегруженные Имена Функций _______________________________________282

8.10Описания Перечислений ______________________________________________283

8.11Описание Asm ______________________________________________________284

7

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

9.ОПЕРАТОРЫ ____________________________________________________________284

9.1Оператор Выражение ________________________________________________284

9.2Составной Оператор, или Блок ________________________________________284

9.3Условный Оператор __________________________________________________284

9.4Оператор While _____________________________________________________285

9.5Оператор Do________________________________________________________285

9.6Оператор For _______________________________________________________285

9.7Оператор Switch _____________________________________________________286

9.8Оператор Break _____________________________________________________287

9.9Оператор Continue ___________________________________________________287

9.10Оператор Return____________________________________________________287

9.11Оператор Goto _____________________________________________________287

9.12Помеченные Операторы _____________________________________________288

9.13Пустой Оператор __________________________________________________288

9.14Оператор Описание _________________________________________________288

10.ОПРЕДЕЛЕНИЯ ФУНКЦИЙ _________________________________________________289

11.КОМАНДНЫЕ СТРОКИ КОМПИЛЯТОРА _______________________________________290

11.1Замена Лексем _____________________________________________________291

11.2Включение Файлов __________________________________________________291

11.3Условная Компиляция________________________________________________292

11.4Управление Строкой ________________________________________________293

12.КОНСТАНТНЫЕ ВЫРАЖЕНИЯ ______________________________________________293

13.СООБРАЖЕНИЯ МОБИЛЬНОСТИ ____________________________________________294

14.КРАТКОЕ ИЗЛОЖЕНИЕ СИНТАКСИСА ________________________________________294

14.1Выражения ________________________________________________________294

14.2Описания __________________________________________________________297

14.3Операторы ________________________________________________________300

14.4Внешние определения ________________________________________________300

14.5Препроцессор ______________________________________________________301

15.ОТЛИЧИЯ ОТ C _________________________________________________________301

15.1Расширения ________________________________________________________301

15.2Сводка Несовместимостей___________________________________________302

15.3Анахронизмы _______________________________________________________303

8

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

Предисловие

Язык формирует наш способ мышления и определяет, о чем мы можем мыслить.

- Б.Л. Ворф

С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.

Ключевым понятием С++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают сокрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. С++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline-подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В С++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.

С++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из С++ программ можно использовать C библиотеки, и с С++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.

Эта книга предназначена главным образом для того, чтобы помочь серьезным программистам изучить язык и применять его в нетривиальных проектах. В ней дано полное описание С++, много примеров и еще больше фрагментов программ.

Благодарности

С++ никогда бы не созрел без постоянного использования, предложений и конструктивной критики со стороны многих друзей и коллег. Том Карджилл, Джим Коплин, Сту Фельдман, Сэнди Фрезер, Стив Джонсон, Брайэн Керниган, Барт Локанти, Дуг МакИлрой, Дэннис Риччи, Лэрри Рослер, Джерри Шварц и Джон Шопиро подали важные для развития языка идеи. Дэйв Пресотто написал текущую реализацию библиотеки потоков ввода/вывода.

9

Учебник по C++. Скачан с сайта http://bizkit.land.ru . Самая полная коллекция в Сети.

Кроме того, в развитие С++ внесли свой вклад сотни людей, которые присылали мне предложения по усовершенствованию, описания трудностей, с которыми они сталкивались, и ошибки компилятора. Здесь я могу упомянуть лишь немногих из них: Гэри Бишоп, Эндрю Хьюм, Том Карцес, Виктор Миленкович, Роб Мюррэй, Леони Росс, Брайэн Шмальт и Гарри Уокер.

В издании этой книги мне помогли многие люди, в частности, Джон Бентли, Лаура Ивс, Брайэн Керниган, Тэд Ковальски, Стив Махани, Джон Шопиро и участники семинара по С++, который проводился в Bell Labs, Колумбия, Огайо, 26-27 июня 1985 года.

Мюррэй Хилл, Нью Джерси Бьярн Страустрап

Заметки для Читателя

"О многом," - молвил Морж, - "Пришла пора поговорить."

- Л. Кэррол

В этой главе содержится обзор книги, список библиографических ссылок и некоторые замечания по С++ вспомогательного характера. Замечания касаются истории С++, идей, оказавших влияние на разработку С++, и мыслей по поводу программирования на С++. Эта глава не является введением: замечания не обязательны для понимания последующих глав, и некоторые из них предполагают знание С++.

Структура Этой Книги

Глава 1 - это короткое турне по основным особенностям С+ +, предназначенное для того, чтобы дать читателю почувствовать язык. Программисты на C первую половину главы могут прочитать очень быстро, она охватывает главным образом черты, общие для C и С++. Во второй главе описаны средства определения новых типов в С++, начинающие могут отложить более подробное изучение этого до того, как прочтут Главы 2, 3 и 4.

ВГлавах 2, 3 и 4 описываются средства С++, не входящие в определение новых типов: основные типы, выражения и структуры управления в С++ программах. Другими словами, в них описывается подмножество С++, которое по существу является языком C. Рассмотрение в них проводится гораздо подробнее, но полную информацию можно найти только в справочном руководстве.

ВГлавах 5, 6 и 7 описываются средства С++ по описанию новых типов, особенности языка, не имеющие эквивалента в C. В Главе 5 приводится понятие

базового класса, и показывается, как можно инициализировать объекты типа,

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]