С++ для начинающих. Шаг за шагом

С++ для начинающих. Шаг за шагом

С++ для начинающих. Шаг за шагом

Автор: Герберт Шилдт
Дата выхода: 2013
Издательство: ООО «ЭКОМ Паблишерз»
Количество страниц: 642
Размер файла: 25,1 МБ
Тип файла: PDF
Добавил: codelibs
 Проверить на вирусы

МОДУЛЬ 1. Основы С + + ................................................................................... 13 

Краткая история С++.......................................................................................... 14 

Язык С: Заря современной эры программирования...................................................14 

Потребность в С++ ..............................................................................................15 

С++ родился........................................................................................................17 

ЭволюцияС++ .................................................................................................... 17 

Как С++ соотносится с языками Java и C # .......................................................... 18 

Объектно-ориентированное программирование..................................................... 20 

Инкапсуляция......................................................................................................21 

Полиморфизм......................................................................................................22 

Наследование......................................................................................................23 

Первая простая программа.................................................................................. 24 

Ввод программы..................................................................................................25 

Компиляция программы ......................................................................................25 

Запуск программы ..............................................................................................26 

Первый программный пример строка за строкой....................................................27 

Обработка синтаксических ошибок ......................................................................30 

Вторая простая программа ................................................................................. 31 

Использование операторов................................................................................. 33 

Ввод с клавиатуры.............................................................................................. 35 

Некоторые дополнительные возможности вывода ..................................................37 

Еще один тип данных.......................................................................................... 38 

Проект 1-1: Преобразование футов в метры...........................................................40 

Два управляющих предложения ........................................................................... 43 

Предложение if ................................................................................................... 43 

Циклы.................................................................................................................. 45 

Использование программных блоков........................................................................46 

Знак точки с запятой и позиционирование ................................................................48 

Практика использования отступов ........................................................................... 49 

Проект 1-2: Создание таблицы преобразования футов в метры.................................... 50 

Знакомимся с функциями .......................................................................................... 52 

Библиотеки С++........................................................................................................ 55 

Ключевые слова С++.................................................................................................. 55 

Идентификаторы........................................................................................................ 56 

Вопросы для самопроверки .........................................................................................57 

МОДУЛЬ 2 . Знакомимся с данными, типами и операторами .......................................... 59 

Почему так важны типы данных.................................................................................. 60 

Типы данных С++...................................................................................................... 60 

Целые числа...............................................................................................................63 

Символы ................................................................................................................... 65 

Типы данных с плавающей точкой................................................................................67 

Булев тип данных .......................................................................................................68 

Tип void .....................................................................................................................69 

Проект 2-1: Разговор с Марсом.................................................................................... 70 

Литералы................................................................................................................... 72 

Шестнадцатеричные и восьмеричные литералы ........................................................... 73 

Строковые литералы................................................................................................. 74 

Символьные Esc-последовательности...........................................................................74 

Подробнее о переменных.......................................................................................... 76 

Инициализация переменной ......................................................................................76 

Динамическая инициализация................................................................................... 77 

Операторы .............................................................................................................. 78 

Арифметические операторы ...................................................................................... 78 

Инкремент и декремент............................................................................................. 79 

Операторы отношения (сравнения) и логические ........................................................81 

Проект 2-2: Конструирование логической операции исключающее ИЛИ.........................84 

Оператор присваивания............................................................................................ 87 

Составные присваивания...........................................................................................87 

Преобразование типов в операциях присваивания .................................................... 88 

Выражения ............................................................................................................ 89 

Преобразование типа в выражениях..........................................................................90 

Приведение типа..................................................................................................... 90 

Пробелы и скобки .................................................................................................. 92 

Проект 2-3: Вычисление регулярных платежей по ссуде ............................................92 

Вопросы для самопроверки .....................................................................................96 

МОДУЛЬ. 3. Предложения управления про граммой ................................................ 97 

Предложение if .................................................................................................... 98 

Условные выражения............................................................................................ 100 

Вложенные предложения if ...................................................................................101 

Цепочка if-else-if...................................................................................................102 

Пpeдлoжeниe switch ............................................................................................ 104 

Bлoжeнныe пpeдлoжeния switch............................................................................ 108 

Проект 3-1: Начинаем строить справочную систему С + + ..................................... 109 

Циклы................................................................................................................ 112 

Некоторые варианты цикла for .............................................................................114 

Опущенные секции ..............................................................................................115 

Бесконечный цикл for............................................................................................117 

Цикл с отсутствующим телом.................................................................................117 

Объявление переменных управления циклом внутри цикла for ................................118 

Цикл while .......................................................................................................... 120 

Цикл do-while ...................................................................................................... 122 

Проект 3-2: Усовершенствование справочной системы С + + ................................. 124 

Использование break для выхода из цикла............................................................. 128 

Использование continue........................................................................................ 130 

Проект З-З: Завершаем разработку справочной системы С++ ................................. 131 

Вложенные циклы ............................................................................................... 135 

Использование предложения goto .......................................................................... 136 

Вопросы для самопроверки ................................................................................... 137 

МОДУЛЬ 4 . Массивы, строки и указатели .............................................................. 139 

Одномерные массивы............................................................................................ 140 

Границы не проверяются! ......................................................................................144 

Двумерные массивы.............................................................................................. 145 

Многомерные массивы........................................................................................... 146 

Проект 4-1: Упорядочение массива ....................................................................... 147 

Строки................................................................................................................. 150 

Основы техники строк..............................................................................................150 

Ввод строки с клавиатуры ......................................................................................151 

Некоторые библиотечные функции обработки строк ............................................... 153 

strcpy() .................................................................................................................153 

strcat() ................................................................................................................. 154 

strcmp() ............................................................................................................... 154 

strlen() .................................................... .............................................................154 

Пример обработки строк........................................................................................... 155 

Использование завершающего нуля.......................................................................... 156 

Инициализация массивов ........................................................................................ 157 

Инициализация массивов неопределенной длины........................................................ 160 

Массивы строк........................................................................................................ 162 

Указатели ............................................................................................................ 164 

Что такое указатели?............................................................................................. 164 

Операторы указателей............................................................................................ 165 

Базовый тип указателя имеет большое значение......................................................167 

Операции присваивания посредством указателя..........................................................168 

Выражения с указателями .................................................................................169 

Арифметика указателей......................................................................................170 

Сравнение указателей........................................................................................ 172 

Указатели и массивы.................................................................................................. 172 

Индексация указателя........................................................................................ 175 

Строковые константы................................................................................................ 177 

Проект4-2:Переворачивание строки .................................................................. 178 

Массивы указателей.................................................................................................. 181 

Соглашение о нулевом указателе.......................................................................... 183 

Указатель на указатель.............................................................................................. 184 

Вопросы для самопроверки ................................................................................... 186 

МОДУЛЬ 5 . В едение в функции .................................................................. 187 

Основы функций ........................................................................................................ 188 

Общая форма определения функции.............................................................. 188 

Создание функции................................................................................................189 

Использование аргументов ..............................................................................190 

Использование предложения геШгп .............................................................. 192 

Возвращаемые значения...................................................................................195 

Использование функций в выражениях.........................................................197 

Правила видимости.................................................................................................... 199 

Локальная область видимости.........................................................................199 

Глобальная область видимости ......................................................................205 

Передача в функции указателей и массивов....................................................... 208 

Передача указателя............................................................................................. 209 

Передача массива................................................................................................210 

Передача строк..................................................................................................... 213 

Возврат указателей.................................................................................................... 214 

Функция тат() .......................................................................................................... 216 

argc и argv: аргументы функции main() ................................................................ 216 

Передача числовых аргументов командной строки.................................... 219 

Прототипы функций .................................................................................................. 220 

Заголовки содержат прототипы ...................................................................... 222 

Рекурсия....................................................................................................................... 223 

Проект5-1:Быстрое упорядочение ...................................................................... 227 

Вопросы для самопроверки ................................................................................... 231 

МОДУЛЬ 6 . Подробнее о функциях .............................................................233 

Два подхода к передаче аргументов .................................................................... 234 

Как С++ передает аргументы ........................................................................... 234 

Использование указателя для создания вызова по ссылке.....................236 

Параметры-ссылки.................................................................................................... 238 

Возврат ссылок..................................................................................................... 243 

Независимые ссылочные переменные .........................................................246 

Несколько ограничений при использовании ссылочных переменных . . . 247 

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

Автоматическое преобразование типов и перегрузка............................... 252 

Проект 6-1: Создание перегруженных функций для вывода на экран...........255 

Аргументы функций с инициализацией по умолчанию.................................... 261 

Аргументы с инициализацией по умолчанию или перегрузка?................263 

Правильное использование аргументов с инициализацией по умолчанию. . 265 

Перегрузка функций и неоднозначность.............................................................. 266 

Вопросы для самопроверки ................................................................................... 269 

МОДУЛЬ 7 . Подробнее о типах данных и операторах ................. 271 

Описатели const и volatile.......................................................................................... 272 

const ........................................................................................................................272 

volatile .....................................................................................................................274 

Описатели классов памяти ..................................................................................... 275 

a u t o .......................................................................................................................... 276 

ex te rn ........................................................................................................................276 

Статические переменные................................................................................... 278

Регистровые переменные .................................................................................282

Перечислимые типы .................................................................................................. 284

typedef............................................................................................................................ 288 

Побитовые операторы .............................................................................................. 289

 Операторы И, ИЛИ, исключающее ИЛИ и Н Е ...............................................290 

Операторы сдвига................................................................................................ 295 

Проект 7-1: Создание функций циклического побитового сдвига.................... 298 

Оператор? ................................................................................................................... 303 

Оператор-запятая...................................................................................................... 304 

Множественное присваивание ............................................................................... 306 

Составное присваивание.......................................................................................... 306 

Иcпoльзoвaниe oпepaтopa sizeof ...........................................................................307 

Обзор относительных приоритетов ...................................................................... 308 

Вопросы для самопроверки ................................................................................... 309 

МОДУЛЬ 8 . Классы и объекты ..................................................................... 311 

Основы классов.......................................................................................................... 312 

Общая форма класса...........................................................................................312 

Определение класса и создание объектов.......................................................313 

Добавление в класс функций-членов.............................................................. 317 

Проект 8-1: Создание класса справочника..........................................................321 

Конструкторы и деструкторы................................................................................... 326 

Параметрические конструкторы...................................................................... 329 

Добавление конструктора в класс Vehicle .................................................... 331 

Другой способ инициализации.........................................................................333 

Встроенные функции ................................................................................................ 334 

Создание встроенных функций внутри класса ............................................ 336

Проект 8-2: Создание класса очереди.................................................................. 339 

Массивы объектов...................................................................................................... 344 

Инициализация массивов объектов .............................................................. 345 

Указатели на объекты................................................................................................ 347 

Ссылки на объекты .................................................................................................... 350 

Вопросы для самопроверки ................................................................................... 350 

МОДУЛЬ 9 . Подробнее о классах ....................................................................351 

Перегрузка конструкторов....................................................................................... 352 

Присваивание объектов............................................................................................ 353 

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

Конструкторы, деструкторы и передача объектов..........................................357 

Передача объектов по ссылке.............................................................................. 358 

Потенциальные проблемы при передаче объектов....................................... 360 

Возврат объектов ....................................................................................................... 361 

Создание и использование конструктора копий ................................................. 363 

Дружественные функции .......................................................................................... 367 

Структуры и объединения ....................................................................................... 372 

Структуры...................................................................................................................372 

Объединения ...........................................................................................................374 

Ключевое слово this.................................................................................................... 378 

Перегрузка операторов ............................................................................................ 379 

Перегрузка операторов с использованием функций-членов...........................................381 

Другие вопросы ......................................................................................................384 

Использование функций-членов для перегрузки унарных операторов . .................... 385 

Операторные функции-не члены............................................................................. 390 

Использование дружественной функции для перегрузки унарного оператора...................................................................................................................394 

Советы и ограничения при перегрузке операторов...................................................... 396 

Проект 9-1: Создание класса, определяющего множество .......................................... 397 

Вопросы для самопроверки ..................................................................................... 407 

МОДУЛЬ 10. Наследование, виртуальные функции и полиморфизм ....................................................................................................409 

Основы наследования................................................................................................ 410 

Доступ к членам и наследование......................................................................... 413 

Управление доступом к базовому классу .............................................................. 417 

Использование защищенных членов ....................................................................... 419 

Конструкторы и наследование ..................................................................................422 

Вызов конструктора базового класса ...............................................................424 

Проект 10-1: Расширение MaccaVehicle.................................................................429 

Создание многоуровневой иерархии классов ......................................................433 

Наследование от нескольких базовых классов......................................................436 

Когда выполняются функции конструктора и деструктора.................................437 

Указатели на производные классы........................................................................... 439 

Ссылки на производные типы....................................... .......................................441 

Виртуальные функции и полиморфизм................................................................... 441 

Основы виртуальных функций...............................................................................441 

Виртуальные функции наследуются ................................................................. 444 

Зачем нужны виртуальные функции?................................................................. 446 

Приложение виртуальных функций........................................................................... 447 

Чистые виртуальные функции и абстрактные классы ...................................... 451 

Вопросы для самопроверки ................................................................................... 455 

МОДУЛЬ 11. С++ и система ввода-вывода............................................................ 457 

Старая и новая системы ввода-вывода................................................................ 458 

Потоки С++................................................................................................................... 459 

Предопределенные потоки С++......................................................................... 460 

Потоковые классы С++.............................................................................................. 460 

Перегрузка операторов ввода-вывода ................................................................462 

Создание операторных функций вывода.......................................................462 

Использование дружественных функций для перегрузки операторов вывода..............................................................................................464 

Перегрузка операторов ввода .........................................................................466 

Форматированный ввод-вывод.................................................................... .. . . . . 468 

Форматирование с помощью функций-членов ios .................................... 468 

Использование манипуляторов ввода-вывода............................................ 475 

Создание собственных манипуляторных функций .................................... 477 

Файловый ввод-вывод.............................................................................................. 480 

Открытие и закрытие файла..............................................................................480 

Чтение и запись текстовых файлов.................................................................483 

Неформатированный и двоичный ввод-вывод............................................ 485 

Чтение и запись блоков данных ...................................................................... 487 

Больше о функция ввода-вывода...........................................................................489

Другие варианты g e t() .........................................................................................489 

getline() .................................................................................................................. 491 

Обнаружение символа ЕОР ..............................................................................491 

peek() и putback() ................................................................................................ 491 

flush() .....................................................................................................................492 

Проект 11-1: Утилита сравнения файлов..............................................................492 

Произвольный доступ................................................................................................ 497 

Определение состояния ввода-вывода................................................................ 500 

Вопросы для самопроверки ................................................................................... 501 

МОДУЛЬ 12. Исключения, шаблоны и другие дополнительные темы .................................................................................................. 503 

Обработка исключений.............................................................................................. 504 

Основы обработки исключений.........................................................................504 

Использование группы предложений са1сЬ................................................. 510 

Улавливание всех исключений.........................................................................512 

Задание исключений выбрасываемых функцией.......................................513 

Вторичное выбрасывание исключения ......................................................... 515 

Шаблоны........................................................................................................................ 517 

Родовые функции ................................................................................................ 518 

Функция с двумя родовыми типами.................................................................520 

Явная перегрузка родовых функций .............................................................. 521 

Родовые классы ...........................................................................................................523 

Явные специализации класса ................................................................................. 526 

Проект 12-1: Создание родового класса очереди ................................................ 527 

Динамическое выделение памяти .............................................................................. 531 

Инициализация выделенной памяти ................................................................... 534 

Выделение памяти под массивы ............................................................................535 

Выделение памяти под объекты ............................................................................536 

Пространства имен ............................................................................................................ 540 

Основы использования пространств имен ........................................................541 

Предложение и в тд ..................................................................................................... 545 

Безымянные пространства имен ............................................................................547 

Пространство имен std .............................................................................................547 

Статические члены классов ............................................................................................ 548 

Статические переменные-члены............................................................................548 

Статические функции-члены ................................................................................. 551 

Динамическая идентификация тип о в(РГП )............................................................553 

Операторы приведения типа .......................................................................................... 557 

dynamic_cast................................................................................................................... 557 

const_cast.........................................................................................................................559 

s atic _ cast.........................................................................................................................559 

reinterpret_cast ..............................................................................................................560 

Что дальше? .......................................................................................................................... 560 

Вопросы для самопроверки ..........................................................................................561 

Приложение А. Ответы на Вопросы для самопроверки ...................................................563 

Приложение В. Препроцессор ..............................................................................603 

# define ...............................................................................................................................604 

Макросы, подобные функциям ...............................................................................606 

# error ................................................................................................................................. 608 

# include ............................................................................................................................608 

Директивы условной компиляции................................................................................. 609 

#if, #else, #elif и # end if ................................................................................................609 

#ifdef и # ifn def.................................................................................................................612 

# u n d e f ...............................................................................................................................613 

Иcпoльзoвaниe defined ..............................................................................................................613 

# line .......................................................................................................................................... 614 

#pragma ................................................................................................................................. 614 

Операторы препроцессора # и # # ............................................................................... 614 

Предопределенные макросы.......................................................................................... 616 

Приложение С. Работа со старым компилятором С++ ......................................................617 

Два простых изменения .............................................................................................619 

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

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


Похожее: