СОДЕРЖАНИЕ...6

ОГЛАВЛЕНИЕ 5

Введение 17

Часть 1. Первое знакомство с С++

Глава 1. Написание вашей первой программы 25

   Постигая концепции С++ 25

   Что такое программа 26

   Как пишут программы 26

   Инсталляция Dev-C++ 27

   Настройка русского языка

   Как настроить русский язык в консольных программах?

     Настройка Dev-C++ 30

   СОВЕТ ДНЯ

   Создание первой программы 31

     Введение кода 32 

     Построение вашей программы 34 

   Выполнение программы 36

     Dev-C++ — это не Windows 36 

     Помощь в Dev-C++ 36 

   Разбор программ 36

     Определение структуры программ С++ 37 

     Использование в исходном коде комментариев 37 

     Использование инструкций в программах 38 

     Объявления 38 

     Генерирование вывода 39 

   Вычисление выражений 39 

     Сохранение результатов выражения 39 

     Обзор программы Convert продолжается... 40 

Глава 2. Премудрости объявления переменных 41

   Объявление переменных 41

   Объявление разных типов переменных 42

     Ограничения, налагаемые на целые числа в С++ 43 

       Округление до целых значений 43 

       Ограничения диапазона 43 

     Решение проблемы усечения дробной части 44 

     Ограничения, налагаемые на числа с плавающей точкой 44 

       Перечисление 44 

       Скорость вычислений 45 

       Потеря точности 45 

       Ограниченность диапазона 45 

   Объявления типов переменных 45 

     Константы 47 

     Специальные символы 47 

   Логические выражения 48 

   Выражения смешанного типа 48 

Глава 3. Выполнение математических операций 50

   Бинарная арифметика 50 

   Анализ выражений 51 

   Определение порядка операций 52 

   Выполнение унарных операций 53 

   Использование операторов присвоения 54 

Глава 4. Выполнение логических операций 55

   Зачем нужны логические операторы 55

    Использование простых логических операторов 55

      Хранение логических значений 57

      Использование целых переменных в качестве логических 58

      Логические операции и действительные переменные 58

        Сокращённые вычисления в С++ 59

    Бинарные числа в С++ 60

      Десятичная система счисления 60

      Другие системы счисления 60

      Двоичная система счисления 60

      Выражения с римскими числами 61

    Выполнение побитовых логических операций 62

      Побитовые операции с одним битом 62

      Использование побитовых операторов 63

      Простой пример 64

      Практическое применение логических вычислений 65

Глава 5. Операторы управления программой 66

    Управление ходом программы с помощью команд ветвления 66

    Выполнение циклов 68

      Цикл while 68

      Использование операторов инкремента и декремента 70

      Использование цикла for 71

      Избегайте бесконечных циклов 73

      Специальные операторы управления циклом 73

    Вложенные команды управления 76

    Инструкция выбора 77

Часть 2. Становимся функциональными программистами 79

Глава 6. Создание функций 81

    Написание и использование функций 81 

      Определение функции sumSequence( ) 83 

      Вызов функции sumSequence( ) 83 

      Разделяй и властвуй 83 

    Подробный анализ функций 84 

      Простые функции 85 

      Функции с аргументами 85 

        Функции с одним аргументом 85 

        Функции с несколькими аргументами 87 

        Функция main( ) 87 

    Перегрузка функций 88 

    Определение прототипов функций 89 

    Хранение переменных в памяти 90 

    Использование заголовочных файлов 91  

_________________

7 стр. Содержание


Глава 7. Хранение последовательностей в массивах 92

   Преимущества массивов 92 

     Работа с массивами 93 

     Инициализация массива 96 

     Выход за границы массива 97 

     Использовать ли массивы 97 

     Определение и использование массивов с элементами-массивами 98 

   Использование символьных массивов 98 

     Создание строки символов 99 

   Управление строками 100 

   Тип string 103 

Глава 8. Первое знакомство с указателями в С++ 105

   Размер переменной 105 

   Что такое адрес 106 

   Адресные операторы 106 

   Использование указателей 108 

     Сравнение указателей и почтовых адресов 109 

     Использование разных типов указателей 109 

   Передача указателей функциям 111 

     Передача аргументов по значению 112 

     Передача значений указателей 112 

     Передача аргументов по ссылке 113 

   Использование кучи 113 

     Область видимости 113 

     Проблемы области видимости 114 

     Использование блока памяти 115 

Глава 9. Второе знакомство с указателями 117

   Операции с указателями 117 

     Повторное знакомство с массивами в свете указателей 118 

     Использование операций над указателями для адресации внутри массива 119 

     Использование указателей для работы со строками 120 

     Почему при работе со строками пользуются указателями 122 

     Операции с указателями других типов 122 

     Отличия между указателями и массивами 122 

   Объявление и использование массивов указателей 124 

     Использование массивов строк 124 

     Доступ к аргументам main( ) 126 

       Аргументы в DOS 127 

       Аргументы в Dev-C++ 127 

       Аргументы в Windows 127 

Глава 10. Отладка программ на С++ 128

   Определение типа ошибки 128 

   Использование отладочной печати 128 

     Выявление "жучка" № 1 130 

     Выявление "жучка" № 2 131 

   Использование отладчика 134 

     Что такое отладчик 134 

_________________

8 стр. Содержание


     Работа с отладчиком 134 

     Запуск тестовой программы 135 

     Пошаговое выполнение программы 136 

Часть 3. Введение в классы 143

Глава 11. Знакомство с объектно-ориентированным программированием 145

   Микроволновые печи и уровни абстракции 145 

     Приготовление блюд с помощью функций 146 

     Приготовление "объектно-ориентированных" блюд 146 

   Классификация микроволновых печей 146 

   Зачем нужна классификация 147 

Глава 12. Классы в С++ 149

   Введение в классы 149

   Формат класса 149

   Обращение к членам класса 150

Глава 13. Работа с классами 154

   Активизация объектов 154 

     Моделирование реальных объектов 155 

     Зачем нужны функции-члены 155 

   Добавление функции-члена 156 

     Создание функции-члена 156 

     Именование членов класса 157 

   Вызов функций-членов 157 

     Обращение к функциям-членам 158 

     Доступ к членам из функции-члена 159

     Именование текущего объекта 160

   Разрешение области видимости 161 

   Определение функции-члена 162 

   Определение функций-членов вне класса 164 

   Перегрузка функций-членов 165 

Глава 14. Указатели на объекты 167

   Определение массивов и указателей 167 

   Объявление массивов объектов 168 

   Объявление указателей на объекты 169 

     Разыменование указателей на объекты 169 

     Использование стрелок 170 

   Передача объектов функциям 171 

     Вызов функции с передачей объекта по значению 171 

     Вызов функции с передачей указателя 172 

     Передача объекта по ссылке 173 

   Зачем использовать указатели и ссылки 174 

   Возврат к куче 175 

   Сравнение указателей и ссылок 175 

   Почему ссылки не используются вместо указателей 175 

   Использование связанных списков 176 

     Другие операции над связанным списком 177 

     Программа LinkedListData 178 

   Списки в стандартной библиотеке 180 

_________________

9 стр. Содержание


Глава 15. Защищённые члены класса: не беспокоить! 181

   Защищённые члены 181

     Зачем нужны защищённые члены 181

     Как устроены защищённые члены 182

   Чем хороши защищённые члены 183

     Защита внутреннего устройства класса 183

     Классы с ограниченным интерфейсом 184

   Обращение к защищённым членам 184

Глава 16. Создание и удаление объектов 188

   Создание объектов 188 

   Использование конструкторов 189 

     Зачем нужны конструкторы 189

     Работа с конструкторами 190

       Конструирование одного объекта 190

       Конструирование нескольких объектов 192

       Конструирование составных объектов 192

   Что такое деструктор 194 

     Зачем нужен деструктор 194 

     Работа с деструкторами 194 

Глава 17. Аргументация конструирования 198

   Как снабдить конструктор аргументами 198 

     Зачем конструкторам нужны аргументы 198 

     Как использовать конструктор с аргументами 199 

   Перегрузка конструктора 200 

   Определение конструкторов по умолчанию 203 

   Конструирование членов класса 204 

     Конструкторы константных членов 208 

   Управление последовательностью конструирования 208 

     Локальные объекты создаются последовательно 209 

     Статические объекты создаются один раз 209 

     Все глобальные объекты создаются до вызова main( ) 210 

     Порядок создания глобальных объектов не определён 210 

     Члены создаются в порядке их объявления 211 

     Деструкторы удаляют объекты в порядке, обратном порядку их создания 212

Глава 18. Копирующий конструктор 213

   Копирование объекта 213 

     Зачем нужен копирующий конструктор 213 

     Использование конструктора копирования 214 

   Автоматический конструктор копирования 215 

   "Мелкие" и "глубокие" копии 217 

   Временные объекты 221 

     Как избегать временных объектов 222 

     Аргумент копирующего конструктора 223 

Глава 19. Статические члены 224

   Определение статических членов 224

     Зачем нужны статические члены 224

     Использование статических членов 225

     Обращение к статическим данным-членам 226

     Применение статических данных-членов 227 

_________________

10 стр. Содержание


  Объявление статических функций-членов 228 

  Что такое this 230 

Часть 4. Наследование 231

Глава 20. Наследование классов 233

   Зачем нужно наследование 234

   Как наследуется класс 234

     Использование подкласса 236

     Конструирование подкласса 237

     Деструкция подкласса 238

   Отношение СОДЕРЖИТ 238

Глава 21. Знакомство с виртуальными функциями-членами: настоящие ли они 240

   Зачем нужен полиморфизм 243

   Как работает полиморфизм 245

   Когда функция не является виртуальной 246

   Виртуальные особенности 247

Глава 22. Разложение классов 249

   Разложение 249 

   Реализация абстрактных классов 253 

     Концепция абстрактных классов 254 

     Создание полноценного класса из абстрактного 255 

     Передача абстрактных классов 257 

     Нужны ли чисто виртуальные функции 257 

   Разделение исходного кода С++ 259 

     Разделение программы — класс Student 260 

     Определение пространства имён 261 

     Реализация класса Student 261 

     Разделение программы — класс GraduateStudent 262 

     Реализация приложения 263 

     Файл проекта 264 

     Создание файла проекта в Dev-C++ 265

Часть 5. Полезные особенности 269

Глава 23. Оператор присвоения 271

   Сравнение операторов и функций 271 

   Потоковые операторы 272 

   Мелкое копирование — глубокие проблемы 272 

   Переопределение оператора присвоения 273 

   Защита от копирования 276

Глава 24. Использование потоков ввода-вывода 277

   Как работают потоки ввода-вывода 277

   Знакомство с подклассами fstream 278

   Прямое чтение из потока 282

   Что такое endl 284

   Подклассы strstream 285

   Работа с манипуляторами 287

_________________

11 стр. Содержание


Глава 25. Обработка ошибок и исключения 290

   Зачем нужен новый механизм обработки ошибок 291 

   Механизм исключительных ситуаций 293 

   Так что же мы будем бросать? 295 

Глава 26. Множественное наследование 298

   Механизм множественного наследования 298

   Устранение неоднозначностей множественного наследования 300

   Виртуальное наследование 301

   Конструирование объектов 306

   Отрицательные стороны множественного наследования 306

Глава 27. Шаблоны С++ 308

   Обобщение функции в шаблон 309

   Шаблоны классов 311

   Зачем нужны шаблоны классов 314

   Советы по использованию шаблонов 316

Глава 28. Стандартная библиотека шаблонов 317

   Контейнер string 317 

   Контейнер list 320 

   Итераторы 321 

   Использование контейнера  map 324 

Часть 6. Великолепная десятка 329

Глава 29. Десять способов избежать ошибок 331

   Включение всех предупреждений и сообщений об ошибках 331 

   Добейтесь чистой компиляции 332 

   Используйте последовательный стиль программирования 332 

   Ограничивайте видимость 332 

   Комментируйте свою программу 334 

   Хотя бы один раз выполните программу пошагово 334 

   Избегайте перегрузки операторов 334 

   Работа с кучей 334 

   Используйте для обработки ошибок исключительные ситуации 335 

   Избегайте множественного наследования 335 

Глава 30. Десять основных возможностей Dev-C++ 336

   Настройка редактора по вашему вкусу 336 

   Подсветка парных скобок 337 

   Включение обработки исключений 337 

   Включение отладочной информации 338 

   Создание файла проекта 338 

   Настройка справки 338 

   Переустановка точек останова после редактирования файла 339 

   Избегайте некорректных имён файлов 339 

   Включите заголовочные файлы в ваш проект 339 

   Работа с профайлером 339 

_________________

12 стр. Содержание


Глава 31. Программа BUDGET 343

   BUDGET1 343

   BUDGET2 348

   BUDGET3 355

     Реализация модуля со связанным списком 356

     Работа со счетами 358

     Классы связанных списков 363

     Оценка бюджета 365

   BUDGET4 366

     Реализация связанного списка в виде шаблона класса 366

     Исходный код BUDGET4 368

     Подведение итогов 373

   BUDGET5 373

     Использование шаблона класса из STL 373

     Создание списка счетов 378

Приложение. Содержимое прилагаемого компакт-диска 379

Пиктограммы

Технические подробности

Советы.

Диск.

Помни!

Атас!

Предметный указатель 380

_________________

13 стр. Содержание


Моим друзьям и семье, которые помогли мне стать "чайником" в ещё большей степени, чем я есть на самом деле.

Об авторе

Стефан P. Дэвис ( Stephen R. Davis ) живёт с женой и сыном недалеко от Далласа, штат Техас. Он и его семья — авторы множества книг, включая такие бестселлеры, как С++ для "чайников" и С++ Weekend Crash Course. Стефан работает в компании L-3 Communications.

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

Я считаю странным то, что на обложке любой книги, особенно такой, как эта, написано только одно имя. В действительности свой труд в создание книги вкладывает громадное число людей. Для начала я хотел бы поблагодарить своего главного редактора Мэри Кордер ( Mary Corder ) и агента Клодетт Мур ( Claudette Moore ), направлявших меня при формировании материала этой книги. Во время работы над книгой я значительно повысил свой уровень как редактор и корректор, и в этом мне помогли редакторы первых изданий. И если бы не помощь координатора первого и второго изданий Сьюзанны Томас ( Suzanne Thomas ), эта книга вообще не была бы напечатана. Однако, несмотря ни на что, на обложке представлено только одно имя, а значит, ответственность за все неточности в тексте должен нести именно его обладатель.

Хочу также поблагодарить свою жену Дженни и сына Кинси за их терпение и преданность.

И наконец, новости о последних событиях из мира животных в моём доме. Для тех, кто не читал ни одной из моих книг, объясняю, что такая сводка встречается в них регулярно.

Мои две собаки, Скутер и Труди, чувствуют себя нормально, хотя Труди почти ослеп. Наши два кролика, Бивас и Батхед, отправились на большую зелёную небесную лужайку после почти полуторалетнего проживания на газоне перед нашим домом.

_________________

16 стр. Введение


Загрузка...