<< Пред. стр. 120 (из 121) След. >>
спецификацииявные, аргументов шаблона функции, 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
ссылки
для объявления исключения в 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
поверка
назначение и опасности приведения, 182
проверка
неявные преобразования, 326
объявления в нескольких файлах, 384
подавление, многоточие в списке параметров функции, 343
сравнение, функция strcmp(), 133
С-строка
динамическое выделение памяти, 401
точка конкретизации
шаблона функции, 518
точное соответствие, 445–51
У
угловые скобки (<>)
шаблон
использование для определения, 56
спецификации аргументов, 490
явные
специализации шаблона, 498
спецификации аргументов шаблона, 490
указатели, 87–90
sizeof(), использование с, 161
void*, 89
преобразование в тип void* и обратно, 179
адресация
C-строк, 92
объектов, 89
объектов класса, использование оператора ->, 603
элементов массива, 118
вектор указателей, преимущества, 255
висячий
возвращенное значение, указывающее на автоматический объект, 389
указывающий на освобожденную память, 394
использование в обобщенных алгоритмах, 120
как значение, возвращаемое функцией, 370
как итераторы для встроенного массива, 264
константные указатели, 101
на константные объекты, 101
нулевой указатель, 455
как операнд оператора delete, 394
параметры, 329, 334
сравнение с параметрами-ссылками, 333–35
сравнение с массивами, 118–20
сравнение со ссылками, 43, 106
указатели на функции, 365–75
вызов по, 368–69
и спецификации исключений, 548–50
инициализация, 367
как возвращаемые значения, 370–73
как параметры, 370–73
массивы, 369–70
на перегруженные функции, 439–40
на функции, объявленные как extern "C", 373–75
написанные на других языках, 374
недостатки по сравнению со встроенными функциями, 559
присваивание, 367
сравнение с указателями на данные (сноска), 87
указатели на члены, 628–38
указатели на данные-члены, 634
указатели на статические члены, 636–38
указатели на функции-члены, 632
умножения оператор (*)
поддержка в арифметических типах данных, 30
унарные операторы, 141
условный
директивы препроцессора, 21
инструкции
if, 192–98
инструкция
switch, 201–3
оператор (?
)
сравнение с функциями, 352
оператор (?:), 133
сокращение для if-else, 199
условный оператор
инструкция, 188
Ф
файл(ы)
ввод/вывод, 28–29
входной
открытие, 28
выходной
открытие, 29
несколько
размещение определения пространства имен в, 410
сопоставление объявлений в, 383
объявления локальных сущностей
использование безымянного пространства имен, 419
фигурные скобки ({})
использование в объявлениях пространств имен, 408
использование в предложении catch, 535
использование в составной директиве связывания, 354
как ограничители составной инструкции, 188
при инициализации вложенного массива, 117
функции
(глава), 320–75
function, заголовочный файл, 568
try-блок, 536
возвращаемые значения, 346–50
локальный объект, проблема возвращения ссылки на, 348
объект класса, 348–50
объект класса как средство вернуть несколько значений, 350
параметр-ссылка как средство возврата дополнительного значения, 329
сравнение с глобальными объектами, 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
открытые
доступ к закрытым членам с помощью, 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
квалификатор const для объявления констант, 100
параметров-ссыслок, 335
разделение обработчиков исключений, 534
рекурсивных функций, 351
члены класса
this
использование в перегруженном операторе присваивания, 710