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

Программирование на C / C++ / Ален И. Голуб. Правила программирования на Си и Си++ [pdf]

.pdf
Скачиваний:
237
Добавлен:
02.05.2014
Размер:
5.67 Mб
Скачать

С++ для начинающих

1182

оператор "точка", 38

... (многоточие), 343–44

для обозначения универсального catch- обработчика, 544

использование в типах функций, 367 / (косая черта)

оператор деления характеристики и синтаксис, 142

/= (косая черта равно)

оператор деления с присваиванием, 152 ; (точка с запятой)

для завершения инструкций, 188 ?: (знак вопроса двоеточие)

условный оператор, 133, 158 сокращенная запись if-else, 199

[,) (левая квадрнатная, правая круглая скобки)

для обозначения интервала с включенной левой границей, 583

[] (квадратные скобки)

для динамического выделения памяти под массив, 400

для освобождения выделенной под массив памяти, 402

оператор взятия индекса для доступа к вектору, 121

для проверки битов в битовом векторе, 168

инициализация отображения с помощью, 294

не поддерживается для контейнеров multiset и multimap, 312

оператор взятия индекса, 736 оператор индексирования массива,

перегрузка в определении класса массива, 45

\\" (обратная косая черта двойная кавычка) escape-последовательность двойной

кавычки, 77 \\ (двойная обратная косая черта)

escape-последовательность "обратная косая черта", 77

\\t (обратная косая черта t) escape-последовательность

горизонтальнаятабуляция, 77 ^ (крышка)

оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ, 164

^= (крышка равно)

оператор побитового ИСКЛЮЧАЮЩЕГО ИЛИ с присваиванием, 164 как оператор составного присваивания,

152 __STDC__, 23

_обратная косая черта одиночная кавычка) escape-последовательность "одиночная

кавычка", 77 {} (фигурные скобки)

использование в объявлениях пространств имен, 408

использование в предложении catch, 536

использование в составной директиве связывания, 354

как ограничители составной инструкции, 188

при инициализации вложенного массива, 117

| (вертикальная черта)

оператор побитового ИЛИ, 164

||(двойная вертикальная черта)

оператор логического ИЛИ

характеристики и синтаксис, 145

оператор логического ИЛИ вычисление, 146

|= (вертикальная черта равно)

оператор побитового ИЛИ с присваиванием, 164 как оператор составного присваивания,

152 ~ (тильда)

оператор побитового НЕ, 164 + (плюс)

оператор сложения поддержка в арифметических типах

данных, 30 ++ (двойной плюс)

оператор инкремента, 153, 740–44 += (плюс равно)

оператор сложения с присваиванием, 146 += (плюс равно)оператор сложения с

присваиванием как оператор составного присваивания,

152

<(левая угловая скобка) оператор "меньше"

вопросы поддержки, 566

использование при сортировке по длине, 558

перегруженный оператор в определении контейнера, 259

<< (двойная левая угловая скобка) оператор вывода, 26 оператор сдвига влево, 164

<<=(двойная левая угловая скобка равно) оператор левого сдвига с присваиванием,

152 <> (угловые скобки)

явный шаблон применение в специализациях, 499

спецификации аргументов, 490 -= (минус равно)

оператор вычитания с присваиванием, 152 = (равно)

оператор присваивания, 100, 733–35 и l-значение, 81

использование с объектами классов, 39

использование с псевдонимами пространств имен, 420

== (двойное равно) оператор равенства, 100

поддержка в арифметических типах данных, 30

оператор равенства, необходимость наличия в определении контейнера, 259

-> (минус правая угловая скобка) оператор "стрелка"

С++ для начинающих

перегруженный оператор доступа к членам, 740

>> (двойная правая угловая скобка) оператор ввода, 1051–63

перегрузка. cin. cin оператор сдвига вправо, 164

>>=(двойная правая угловая скобка равно) оператор правого сдвига с присваиванием,

152

символы:, 77 сложения (+) оператор

комплексных чисел, 155 сокрытие информации, 39, 598

вопросы, связанные с вложенными пространствами имен, 414

доступ к закрытым членам класса, 607

имена в локальной области видимости, 378 объявление члена пространства имен, обход с

помощью оператора разрешения области видимости, 411

параметры шаблона, имена в глобальной области видимости, 478

сравнение с перегрузкой, 434 во вложенных областях видимости, 461

члены глобальной области видимости, доступ

с помощью оператора разрешения области видимости, 411

составные выражения, 142 инструкции, 188–89

директивы связывания, 354

присваивания оператор, 152

операторы над комплексными числами, 156

состояния условий

в применении к библиотеке iostream, 1086–88

спецификации явные, аргументов шаблона функции, 490

списки

list, заголовочный файл, 256 merge(), обобщенный алгоритм

специализированная реализация для списка, 588

push_front(), поддержка, 257 size(), 221

влияние размера объекта на производительность, 254

как последовательный контейнер, 256–61

неприменимость итераторов с произвольным доступом, 583

неприменимость обобщенных алгоритмов, требующих произвольного доступа, 588

обобщенные, 241–47

поддержка операций merge() и sort(), 269 сравнение с векторами, 251–52 требования к вставке и доступу, 252

списки параметров переменной длины использование многоточия, 343

сравнения объекты-функции, 571 операторы, 145–48

поддержка в контейнерах, 258

1183

ссылки

для объявления исключения в catch- обработчике, 543

инициализация как преобразование точного соответствия,

457–59

ранжирование при разрешении перегрузки функции, 471–72

ссылки на const, 105–8

использование с sizeof(), 161

как тип возвращаемого значения функции, 348

недопустимость массив ссылок, 115 параметры-ссылки, 107, 329–33

необходимость для перегрузки операторов, 335

преимущества эффективности, 330 парамтеры-ссылки

по сравнению с параметрами-указателями, 333–35

сравнение с указателями, 104

статические объекты объявление локальных объектов как, 390–92

объявление, сравнение с безымянным пространством имен, 419

статические члены класса указатели на, 636–37

статическое выделение памяти, 33 стек, контейнерный тип, 312–15 stack, заголовочный файл, 312

top(), функция, 154, 313

динамическое выделение памяти, 317 операции (таблица), 313

реализация с помощью контейнера deque, 314 стека, пример класса, 183–87, 183–87

строки

append(), 287–88 assign(), 287 compare(), 289 erase(), 267, 285 insert(), 266 replace(), 290–91 swap(), 268, 288

поиск подстроки, 273–79, 285–86, 290

присваивание, 266

Т

тело функции, 321

тип точное соответствие, 445–51

тип(ы)

bool, 108–10 C-строка, 92–95

typedef, синоним типа, 126

арифметические, 30–33

базовые

(глава), 98–139

для определения нескольких объектов одного и того же типа pair, 128

имя класса как, 595

использование с директивой препроцессора include, 68

С++ для начинающих

1184

поверка

недостатки по сравнению со встроенными

назначение и опасности приведения, 182

функциями, 559

проверка

присваивание, 367

неявные преобразования, 326

сравнение с указателями на данные (сноска),

объявления в нескольких файлах, 384

87

подавление, многоточие в списке

указатели на члены, 628–38

параметров функции, 343

указатели на данные-члены, 634

сравнение, функция strcmp(), 133

указатели на статические члены, 636–38

С-строка

указатели на функции-члены, 632

динамическое выделение памяти, 401

умножения оператор (*)

точка конкретизации

поддержка в арифметических типах данных,

шаблона функции, 518

30

точное соответствие, 445–51

унарные операторы, 141

 

условный

У

директивы препроцессора, 21

инструкции

 

угловые скобки (<>)

if, 192–98

шаблон

инструкция

использование для определения, 56

switch, 201–3

спецификации аргументов, 490

оператор (?

явные

)

специализации шаблона, 498

сравнение с функциями, 352

спецификации аргументов шаблона, 490

оператор (?:), 133

указатели, 87–90

сокращение для if-else, 199

sizeof(), использование с, 161

условный оператор

void*, 89

инструкция, 188

преобразование в тип void* и обратно, 179

 

адресация

Ф

C-строк, 92

 

объектов, 89

файл(ы)

объектов класса, использование оператора

ввод/вывод, 28–29

->, 603

входной

элементов массива, 118

открытие, 28

вектор указателей, преимущества, 255

выходной

висячий

открытие, 29

возвращенное значение, указывающее на

несколько

автоматический объект, 389

размещение определения пространства

указывающий на освобожденную память,

имен в, 410

394

сопоставление объявлений в, 383

использование в обобщенных алгоритмах,

объявления локальных сущностей

120

использование безымянного пространства

как значение, возвращаемое функцией, 370

имен, 419

как итераторы для встроенного массива, 264

фигурные скобки ({})

константные указатели, 101

использование в объявлениях пространств

на константные объекты, 101

имен, 408

нулевой указатель, 455

использование в предложении catch, 535

как операнд оператора delete, 394

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

параметры, 329, 334

связывания, 354

сравнение с параметрами-ссылками, 333–

как ограничители составной инструкции, 188

35

при инициализации вложенного массива, 117

сравнение с массивами, 118–20

функции

сравнение со ссылками, 43, 106

(глава), 320–75

указатели на функции, 365–75

function, заголовочный файл, 568

вызов по, 368–69

try-блок, 536

и спецификации исключений, 548–50

возвращаемые значения, 346–50

инициализация, 367

локальный объект, проблема возвращения

как возвращаемые значения, 370–73

ссылки на, 348

как параметры, 370–73

объект класса, 348–50

массивы, 369–70

объект класса как средство вернуть

на перегруженные функции, 439–40

несколько значений, 350

на функции, объявленные как extern "C",

параметр-ссылка как средство возврата

373–75

дополнительного значения, 329

написанные на других языках, 374

сравнение с глобальными объектами, 349–

 

50

С++ для начинающих

указатель на функцию, 372 вызовы, 322

заключенные в try-блок, 536 недостатки, 352 сравнение с обработкой исключений, 542

иглобальные объекты, 381–87

илокальная область видимости, 378

имя функции

перегрузка, 429 преобразуется в указатель, 367

интерфейс объявление функции как, 323

прототип функции как описание, 323 конверторы, 757–61

конструкторы как, 761–64 локальное хранение, 327

на другом языке, директивы связывания, 353–55

обращение к, 322

объявления как часть шаблона функции, 477

как члена пространства имен, 407 сравнение с определениями, 382

объявления перегруженных функций, 429–32 и область видимости, 434–38 как перегружаются, 429–32

когда не надо перегружать, 432–34 причины для перегрузки функций, 429

оператор вызова функции (()), 736–38 определение, 321

как часть шаблона функции, 477 сравнение с объявлениями, 382

преимущества, 352 преобразование функции в указатель, 448 прототип, 323–27 рекурсивные, 350–52 сигнатура, 325 списки параметров, 325

тип недопустимость возврата из функции, 324

преобразование в указатель на функцию, 347

тип возвращаемого значения, 324–25

недопустимость указания для конструкторов, 671

недостаточен для разрешения перегруженных функций, 431

ссылка, 348 указатель на функцию, 370–73

функции-кандидаты, 442, 460–65 вызов с аргументами типа класса, 767–70

для вызовов в области видимости класса, 770–71

для вызовов функций-членов, 778 для перегруженных операторов, 783–87 для шаблонов функций,, 507 наследование и, 1031–34

функции-члены, 129, 596–98, 604–14

встроенные функции сравнение с не-встроенными, 605–7

вызов, 131 модификация для обработки исключений, 531 независимые от типа, 50 определение, 132

1185

открытые доступ к закрытым членам с помощью, 40

сравнение с закрытыми, 608–10

перегруженные и разрешение, 776–82

объявление, 777–78 проблемы, 434 функции-кандидаты, 778

специальные, 610–11 статические, 626–27 устоявшие, перегрузка и, 779–82

Х

хип, 162, 392, 587

выделение памяти для классов в, 749–51

выделение памяти для массива в, 400 выделение памяти для объекта в, 392

исключение bad_alloc, 393

обобщенные алгоритмы, 587, 1191 См. также обобщенные алгоритмы, 1192

Ц

целые константы, перечисления как средство

группировки, 110 расширение булевских константы до целых,

146

расширение типа, 177 стандартные преобразования, 177

при разрешении перегрузки функции, 453 типы данных, 75

цикл(ы), 20

завершение

break, инструкция, 218 continue, инструкция, 219

инструкции for, 196

while, 213–16

инструкции do-while, 216–17 for, 209–13 while, 21

ошибки программирования, 198 бесконечные циклы, 274

условие останова, 32

Ч

числа с плавающей точкой арифметика, характеристики и смежные

темы, 145 правила преобразования типов, 177

стандартные преобразования при разрешении перегрузки функции, 453

численные обобщенные алгоритмы, 586 numeric, заголовочный файл, 586

читабельность typedef, 126

в объявлениях указателей на функции, 369 как синоним контейнерных типпов, 295

имен параметров, 325 имен перегруженных функций, 432

С++ для начинающих

1186

квалификатор const для объявления констант,

конкретизации, 592–782одели компиляции,

100

494–98

параметров-ссыслок, 335

с включением, 494–95

разделение обработчиков исключений, 534

с разделением, 495–97

рекурсивных функций, 351

определение, 474–82

члены класса

параметры, 475–82

this

для повышения гибкости обобщенных

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

алгоритмом, 566

присваивания, 710

параметры-константы, 476

когда использовать в функциях-членах,

параметры-типы, 476

619–21

перегрузка, 503–6

указатель this, 616–20

передача объектов-функций шаблону, 569

битовые поля, 643–45

разрешение имен в определениях, 514–20

данные-члены, 594–96

разрешение перегрузки при конкретизации,

защищенные, 871

506–14

изменчивые (mutable), 614–16

тип возвращаемого значения и выведение

статические, 621–25

аргументов шаблона, 491

тип члена, 631–36

точка конкретизации, 518

доступ, 599–600, 607–8

явные

друзья, 599–600

аргументы, 490–93

статические, 621–28

объявления конкретизации, 497–98

функции-члены, 596–98, 604–16

спецаиализации, 498–503

встроенные и не-встроенные, 605–7

 

закрытые и открытые, 608–10

Э

конверторы, 757–61

 

перегруженные, объявления, 776–78

эффективность

специальные функции-члены, 610–11

сравнение с гибкостью при выделении

спецификации исключений для, 1021–24

памяти, 33

статические, 626–28

 

тип члена, 631–33

Я

члены-классы

 

открытые и закрытые, 598–99

явное

шаблоны, 826–31

преобразование, 178–82

Ш

преобразование типа, 144, 175

 

шаблон класса Array

 

Array_RC, производный класс, 990–92

 

шаблоны классов

 

(глава), 791–857

 

вложенные типы, 824–26

 

и пространства имен, 846–48

 

модели компиляции, 831–38

 

с включением, 833

 

с разделением, 834–37

 

объявления друзей в, 815–21

 

определения, 791–800

 

разрешение имен в, 844–46

 

параметры, 794–97, 805–11

 

параметры-константы, 805–11

 

параметры-типы, 800–805

 

статические члены классов, 821–24

 

точка конкретизации, для функций-членов,

 

846

 

частичные специализации, 842–44

 

члены

 

функций, 811–15

 

явные

 

объявления конкретизации, 837–38

 

специализации, 838–42

 

шаблоны функций

 

(глава), 592–782

 

и пространства имен, 521–24