Математика

Физика

Химия

Биология

Техника и    технологии

От Си к С++ - Е.Ж Козелд М,: Финансы я статистика, 1993,-272 с.: ил
От Си к С++ - Е.Ж Козелд М,: Финансы я статистика, 1993,-272 с.: ил

От Си к С++/ЕЖКозелд, Л.М.Романовская, Т.В.Русс и др.-| М,: Финансы я статистика, 1993,-272 с.: ил. ;л
ISBN 5-279-01096-0. ; >. I
\
....... • ' '•< • • • - ;.'*
(Книга содержит описание языка программирования C++ для персональным ЭВМ и рассчитана на пользователей, знакомых с языком Си. Даете* краткий обзор новых возможностей языка C++ по сравнению со стандартом языка СЦ Подробно описываются средства C++ для объектно-ориентированного програм*. мирования (классы как средство поддержки абстрактных типов данных, возмож| ности перегрузки фумший и операций» механизм наследования чере| порождение JUUICCOB, иир1уалыиое функци^ дяя реализации полиморфизма):! Длв профессиональны* программистов и^^специалистов по вычислительно* техник, а также студентов вуао» соответда^Я^ощих специальностей. .^
ПРЕДИСЛОВИЕ
Язык C++ относится к .языкам объектно-ориентированного программирования и поэтому может рассматриваться как «зык нового поколения. Но C++ создан на основе языка Си, представляющего во многом традиционные концепции программирования, и благодаря этому освоение C++ не является трудной задачей, особенно для тех, кто знает язык,Си. '.'
Эта книга как раз и адресуется этой категории программистов. Основное внимание в книге уделяется описанию тех новых возможностей, которые отличают C++ от Си и делают его языком объектно-ориентированного программирования.
Главная особенность такого языка — это возможность определять новые типы данных так, что их использование ничем не будет отличаться от использования встроенных в язык типов данных. Новые типы данных должны в большей мере соответствовать понятиям той прикладной области, для которой разрабатывается программа, чем встроенные типы, ориентированные на архитектуру ЗЪТА.
Три основные концепции объектно-ориентированного программирования (инкапсуляция, наследование, полиморфизм) присущи языку C++. * . "
Инкапсуляция, или сокрытие данных, обеспечивается механиз- ' мом классов для определения новых типов данных (абстрактных типов данных). •*"'
Наследование реализуется через возможность порождать иерархию классов, что позволяет при разработке новых проектов использо-к вать готовые классы и тем самым уменьшить затраты на разработку.
Полиморфизм обеспечивается возможностью переопределять семантику операций и использовать одно и то же обозначение оне^; рации для манипулирования разными типами данных, •. •
Книга логически делится на f ри части. Первую часть cocritA ляют введение и раздел 1. Эта часть представляет собой введение
\ . • '*!*. • '' ' --*1' ' ' '
' --- •
СОДЕРЖАНИЕ
Предисловие............... . ......................., . з
Введение........................... ....... .1 .... 5
От процедурных к объектно-ориентированным языкам программирования . . 5 Основные свойства объектно-ориентированного программирования ....... 7
История развития C++........ ,............. .,........... 8
1. Обзор новых возможностей C++ ............«,. Л;...........ц
1,1; C++ как улучшение Си . . ........:....-............... И
.1. Комментарии....................................ц
.2. Константы................................... 12
.3. Встраиваемые функции. ......................... 13
.4. Объявления структур, смесей и перечислений......... t . . . . 15
.5. Объявление переменных.. ........ .'. .......... .: . . . 18
.6. Ссылки:.................................... 19
.7. Использование void.". ............. .'-.•........ . . .• 20
.8. Преобразование типов. ............ -...,...:....... 22
.9. Новые операции,.............................: 23
.10. Объявление функций........... .................... 25 :
.11. Передача аргументов функции по ссылке. . . . '........... 26
.12. Передача аргументов по умолчанию................. . 29 .
.13. Перегрузка функций......*...... ...............31
.14. Использование функций Си в программах C++............ 32
.15. Ввод-вывод.............•..,................32
1.2. C++ как Си с классами............... ..............34
.2.1. Определение класса. . ............................ 35 ''
.2.2. Конструкторы и деструкторы......................... 38
.2.3. Перегрузка операций...........................-40
.2.4. Дружественные функции.............,..:..........42
;2.5. Наследование..........................-."..' . . . 44
1.3. Классы, структуры, смеси: сходства и различия . .".............44
1.4. Совместимость Си и C++ .........................-. . . 45 '
1.5. Стиль программирования.....;.................... . : 46 -.
2.'Классы . . . .'.Я .'..•;..... '.......;...'..... .... . ........ .47 1
2.1. Встроенные типы данных. Структуры ....................47 >
2.2. Определение класса . ...............................50 1
2.3- Область видимости. ............................... 53
268
2.4, Сокрытие информации............., . .....,..,.*... „ 55
2.5. Встраиваемые член-функции.........................56
. 2.6. Объявление объекта класса..................<.........57
2.7. Использование спецификатора класса памяти static.............58
2.8*. Члены класса const............................... . 61
2.9. Неявный указатель this...........................: . 62
2.10. Указатель на член класса,............. - ............... 66
2.11. Локальные классы ........•.....:.-...:............. .70
. ..2.12. Вложенные классы ..............,.'............'. . . . 71
2.13. Альтернативные реализации......................... 72
3. Специальный вид функций класса— конструкторы и деструкторы...... 75
3.1. Построение объектов в динамической памяти............ ..... . 75
3.2. Время жизни объекта.............................. 77
3.3. Конструктор. Инициализация объекта.................... 78
3.4. Деструктор . . . . :............;...................82
3.5. Член-данные — объекты другого класс*..................... 91
3.6. Копирование объектов класса .........................94
3.6.1. Копирование при инициализации . ................ ... 94
3.6.2. Копирование при присваивании.................. . .- . 99
3.6.3. Копирование объектов с член-данными другого класса.......102
3.7. Массив объектов класса J. ...... ,~. .^.-. .'.. .'.,:".•........ 106
3.8. Смеси — специальный вид класса . . . . ... . . ... 1 ......... 107
4. Дружественные функции................ .............. ПО
4.1. Дружественные глобальные функции.......• '•.........; 110
4.2. Дружественные член-функции . .'........ .............116
5. Преобразование типов...............................118
5.1. Стандартные преобразования ........... .............. 118
• 5.2. Явные преобразования ...........'.... ............. 122
5.3. Преобразования абстрактных типов данных ................ 124
5.3.1. Конструктор как операция преобразования гипа. . .........125
5.3.2. Операция приведения типа — член класса . . . .......... 128
6. Перегрузка функций................. .': ............. . 130
6.1. Что такое перегрузка функций....................... 130
6.2. Вызов функции при перегрузке . . ...................... 132
6.2.1. Точное соответствие.................. .'......'. . 134
6.2.2. Соответствие, достигаемое стандартными преобразованиями ... 138
6.2.3. Соответствие через преобразования, определенные пользователем 138
6.2.4. Двусмысленность................................ 141 •
6.3. Перегрузка функций с несколькими аргументами . . . . . . ... .•.., . 143 •
. 6.4. Перегрузка функций с аргументами по умолчанию . . . .......... 145
6.5. Перегрузка и область видимости...................... 146 .
7. Перегрузка операций ..'................ .....;..,;... 147
7.1. Функции-операции................................ 147
7.2. Правила перегрузки операций................... ....... 150
7.3. Смысл операций ...... .'.!... . . . . ...../............. 153
7.4. Эквивалентность операций .. л........... . . ... .'. . .ч. . . • 153
7.5. Перегрузка операций и преобразование типов . ... . . ........ . 156
7.6. Ссылки и перегрузка операций . . . ....... ......... . • •-,158
7.7. Присваивание и инициализация............'. ...... • • • 162
7.8. Индексирование ...................... . . . . . < . . • • • 1М
7.9. Операция выбора элемента.... . ......... .- . . . . . . .'-. , •,- • '**
7.10. Перегрузка операций new и delete .-........ . . . . . . .'С .» • 169
7.11. Друзья или члены............................ . . ... 172
8. Ввод-вывод.................................... . . . 173
8.1. Ввод-вывод встроенных типов . .'....................... 173
8.2. Состояние потока ... . . ......................... . . 176
8.3. Ввод-вывод типов, определенных пользователем.............. 179
8.4. Форматизованный вывод...........'................, ... 181
8.5. Манипуляторы . .-. ,..........::.....,............. 185
8.6. Ввод-вывод файлов :.......................... ... . . 187
9. Обьектно-орненгированное программирование ................ 192
9.1. Инкапсуляция'................................... 192
9.2. Наследование................................ . . . . 194
9.3. Полиморфизм............;....................'.... 195
9.3.1. Статическое связывание........... .... ........... 196
9.3.2; Динамическое связывание .-.!-.. . ,.......... .... • • • -197
10. Порождение классов .......'........................ . .200
10.1. Определение порождения классов......................200.
10.2. Базовый класс • . .,. - . • .'...'........................202
10.2.1. Спецификатор доступа protected....................204
10.3. Порожденный класс ... ...... .'.........• • • • • • • • •.....205
10.3.1. Иерархия порожденных классов.................... 207
10.3.2. Объект порожденного класса......................208
, 10.4. Двступ к членам порожденного класса ................... 208
10.4.1. Доступ к наследуемым членам ..................... 209
10.4.2. Доступ к собственным членам ............. . . . ... . , . 210
10.5. Стандартные преобразования при порождении . . . . .......... 210
10.6. Инициализация объекта порожденного класса . .............212
10.6.1. Инициализация собственных членов ............•.....212
10.6.2. Инициализация наследуемых членов................ .-.'213
- , 10.6.3. Порядок инициализации при порождении ............. 214
10.6.4. Инициализация.объектом того же порожденного класса ..... 215
10.7. Порождения public и private ...... . . . ......... .......218
10.8. Порождение из нескольких базовых классов. ............... 220
10.8.1. Доступ к членам порожденного класса............... .-221
10.8.2. Объект порожденного класса ...... .'................ 221
10.8.3. Инициализация объектов порожденного класса . . . N.......222
10,8-4. Проблемы порождения иэ нескольких классов . .......... 222
10.9. Виртуальные базовые классы ......................... 225
10.9.1. Определение виртуального базового класса . .........,. . . 225
10.9.2. Инициализация виртуального базового класса ........... .- 227
10.9.3. Доступ к членам виртуального базового класса...........228
и.Вщггуалышефунжцп . . . ............................ . . . 229
11.1. Динамическое связывание '....... . . .......... ...:..... 229
" 11.2. Определение виртуальных функций • • • •................. 233
11.2.1. Абстрактный класс .. ................. .". ........ 234
. 11.2.2. Правила определения виртуальных функций :............ 234
11.2.3. Видимость виртуальных функций : ...... '. , . . ........ 237
11.3. Вызов виртуальных функций......................... 238
11.3.1. Когда вызов виртуальной функции не является виртуальным .. 240 аЬ^Виргушлымедаструиоры ,---.;.................., 241
12. Другие аспекты аорождимв: классов............. . . ........ 243
12.1. Присваивание объектов порожденного класса .....:..... . . . . 243
J2;2. Преобразование порожденных типов . . . , . . ....... .... . . . 244
12.3. Перегрузка функций с аргументами-порожденнымм классами . . . . 246
12.4. Использование дружественных функций и классов при порождении . 248
12.5. Преобразование указателей на члены класса.............. 250
ПРИЛОЖЕНИЕ. Полный пример объектно-ориентированной
программы................. . •......... . . . 252
Литература .........,...... ......... . ...../....... 267

Цена: 200руб.

Назад

Заказ

На главную страницу

Hosted by uCoz