Основы программирования на C++

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Липпман Стэнли
Series: C++ In-Depth
Publisher: Вильямс
Year: 2002

Language: Russian
Commentary: увеличил контрастность, подчистил мусор
Pages: 253

Предисловие 13
Структура книги 15
Замечания к исходным текстам прогpамм 15
Благодарности 16
Источники дополнительной информации 16
Принятые обозначения 17

1. Основы программирования на языке С++ 19
1.1. Как написать прогpамму на языке С++ 19
1.2. Определение и инициализаuия объекта данных 24
1.3. Запись выражений 28
Приоритет операторов 31
1.4. Запись условных операторов и операторов циклов 32
Условные операторы 32
Операторы цикла 36
1.5. Как использовать массивы и векторы 37
1.6. Применение указателей для повышения гибкости прогpаммы 41
1.7. Запись и чтение файлов 45

2. Процедурное проrраммирование 49
2.1. Как написать функuию 49
2.2. Вызов функuии 54
Семантика передачи по ссылке 58
Область видимости и экстент 60
Динамическое управление памятью 61
2.3. Использование значений параметров по умолчанию 62
2.4. Использование локальных статических объсктов 65
2.5. Объявление подставляемых функuий 66
2.6. Предоставление переrружаемых функuий 68
2.7. Определение и использование шаблонных функuий 69
2.8. Применение указателей на функции для повышения гибкости прогpаммы 71
2.9. Подrотовка заголовочноrо файла 73

3. Обобщенное программирование 77
3.1. Арифметика указателей 78
3.2. Смысл итераторов 82
3.3. Обшие для всех контейнеров операuии 85
3.4. Использование последовательных контейнеров 86
3.5. Использование обобщенных алrоритмов 89
3.6. Как создавать обобщенный алrоритм 91
Объекты функций 93
Адаптеры объектов функций 94
3.7. Использование карт 97
3.8. Использование множеств 99
3.9. Как использовать адаптеры вставки итераторов 100
3.10. Использование итераторов класса iostream 102

4. Проrраммирование, основанное на объектах 105
4.1. Как реализовать класс 106
4.2. Конструктор и деструктор класса 109
Список инициализации членов класса 111
Почленная инициализация 113
4.3. Что такое mutable и const 114
Члены данных mutable (изменяемые) 116
4.4. Указатель this 117
4.5. Статические члены класса 119
Статические функции-члены 119
4.6. Создание класса итератора 122
Вложенные типы 125
4.7. Иноrда для сотрудничества нужна дружба 125
4.8. Реализация оператора присваивания копированием 127
4.9. Реализация объекта функции 128
4.10. Предоставление экземпляров операторов класса iostream для друrих классов 130
4.11. Указатели на функции-члены класса 131

5. Объектно-ориентированное проrраммирование 137
5.1. Основные принципы объектно-ориентированноrо проrpаммирования 137
5.2. Практика объектно-ориентированноrо проrpаммирования 140
5.3. Полиморфизм без наследования 143
5.4. Определение абстрактноrо базовоrо класса 145
5.5. Определение производноrо класса 148
5.6. Использование иерархии наследования 154
5.7. Каким должен быть базовый класс? 155
5.8. Инициализация, уничтожение и копирование 157
5.9. Определение виртуальных функций в производных классах 158
Статический выбор виртуальной функции 160
5.10. Механизм определения типа в процессе выполнения проrpаммы 161

6. Проrраммирование с шаблонами 165
6.1. Параметризованные типы 166
6.2. Определение шаблонноrо класса 168
6.3. Работа с шаблонными параметрами 169
6.4. Реализация шаблонноrо класса 171
6.5. Шаблон функции оператора вывода 176
6.6. Константные выражения и параметры по умолчанию 177
6.7. Параметры щаблона как стратеrия 180
6.8. Шаблонные функции-члены 182

7. Обработка исключений 185
7.1. Генерация исключения 185
7.2. Перехват исключений 186
7.3. Проверка на возникновение исключения 188
7.4. Локальное управление ресурсами 191
7.5. Стандартные исключения 193

Приложение А. Решения к упражнениям 197

Приложение Б. Справочник по обобщенным алrоритмам 237
accumulate()
adjacent_difference()
adjacent_find()
binary_search()
сору()
сору_backward()
count()
count_if()
equal()
fill()
fill_n()
find()
find_end()
find_first_of()
find_if()
for_each()
generate()
generate_n()
includes()
inner_product()
inplace_merge()
iter_swap()
lexicographical_compare()
mах(), min()
max_element(), min_element()
merge()
nth_element()
partial_sort(), partial_sort_copy()
partial_sum()
partition(), stable_partition()
random_shuffle()
remove(), remove_copy()
remove_if(), remove_copy_if()
replace(), replace_copy()
replace_if(), replace_copy_if()
reverse(), reverse_copy()
rotate(), rotate_copy()
search()
search_n()
set_difference()
set_intersection()
set_symmetriс_differenсе()
set_union()
sort(), stable_sort()
transform()
unique(), unique_copy()

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