Категории раздела
Книги [7] |
Видеоуроки [1] |
Tak.ru
Главная » Файлы » Книги |
Книга Липпман c++
[ Скачать с сервера (5.15 Mb) ] | 08.11.2012, 13:31 |
Хорошая книга для новичков.От элементарных до сложных задач. 1.НАЧИНАЕМ......................................................................................................................... 22 1.1.РЕШЕНИЕ ЗАДАЧИ......................................................................................................... 22 1.2.ПРОГРАММА НА ЯЗЫКЕC++......................................................................................... 23 1.2.1.Порядок выполнения инструкций................................................................... 28 1.3.ДИРЕКТИВЫ ПРЕПРОЦЕССОРА...................................................................................... 30 1.4.НЕМНОГО О КОММЕНТАРИЯХ......................................................................................... 33 1.5.ПЕРВЫЙ ВЗГЛЯД НА ВВОД/ВЫВОД................................................................................ 35 1.5.1.Файловый ввод/вывод........................................................................................ 37 2.КРАТКИЙ ОБЗОР С++..................................................................................................... 39 2.1.ВСТРОЕННЫЙ ТИП ДАННЫХ"МАССИВ”.......................................................................... 39 2.2.ДИНАМИЧЕСКОЕ ВЫДЕЛЕНИЕ ПАМЯТИ И УКАЗАТЕЛИ................................................... 42 2.3.ОБЪЕКТНЫЙ ПОДХОД.................................................................................................... 45 2.4.ОБЪЕКТНО-ОРИЕНТИРОВАННЫЙ ПОДХОД................................................................... 55 2.5.ИСПОЛЬЗОВАНИЕ ШАБЛОНОВ....................................................................................... 64 2.6.ИСПОЛЬЗОВАНИЕ ИСКЛЮЧЕНИЙ................................................................................... 70 2.7.ИСПОЛЬЗОВАНИЕ ПРОСТРАНСТВА ИМЕН...................................................................... 73 2.8.СТАНДАРТНЫЙ МАССИВ–ЭТО ВЕКТОР........................................................................ 77 3.ТИПЫ ДАННЫХ С++........................................................................................................ 84 3.1.ЛИТЕРАЛЫ..................................................................................................................... 84 3.2.ПЕРЕМЕННЫЕ................................................................................................................ 87 3.2.1.Что такое переменная..................................................................................... 89 3.2.2.Имя переменной.................................................................................................. 91 3.2.3.Определение объекта...................................................................................... 92 3.3.УКАЗАТЕЛИ.................................................................................................................... 95 3.4.СТРОКОВЫЕ ТИПЫ...................................................................................................... 100 3.4.1.Встроенный строковый тип......................................................................... 100 3.4.2.Классstring......................................................................................................... 103 3.5.СПЕЦИФИКАТОРCONST............................................................................................... 108 3.6.ССЫЛОЧНЫЙ ТИП........................................................................................................ 112 3.7.ТИПBOOL..................................................................................................................... 116 3.8.ПЕРЕЧИСЛЕНИЯ........................................................................................................... 117 3.9.ТИП"МАССИВ”.............................................................................................................. 120 3.9.1.Многомерные массивы.................................................................................... 124 3.9.2.Взаимосвязь массивов и указателей........................................................... 125 3.10.КЛАССVECTOR.......................................................................................................... 128 3.11.КЛАССCOMPLEX........................................................................................................ 131 3.12.ДИРЕКТИВАTYPEDEF................................................................................................ 132 3.13.СПЕЦИФИКАТОРVOLATILE........................................................................................ 134 3.14.КЛАССPAIR................................................................................................................. 134 3.15.ТИПЫ КЛАССОВ......................................................................................................... 135 4.ВЫРАЖЕНИЯ................................................................................................................... 146 4.1. ЧТО ТАКОЕ ВЫРАЖЕНИЕ?............................................................................................ 146 4.2.АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ.................................................................................... 147 4.3.ОПЕРАЦИИ СРАВНЕНИЯ И ЛОГИЧЕСКИЕ ОПЕРАЦИИ.................................................. 150 4.4.ОПЕРАЦИИ ПРИСВАИВАНИЯ........................................................................................ 153 4.5.ОПЕРАЦИИ ИНКРЕМЕНТА И ДЕКРЕМЕНТА................................................................... 158 4.6.ОПЕРАЦИИ С КОМПЛЕКСНЫМИ ЧИСЛАМИ................................................................... 159 4.7.УСЛОВНОЕ ВЫРАЖЕНИЕ.............................................................................................. 163 4.8.ОПЕРАТОРSIZEOF........................................................................................................ 164 4.9.ОПЕРАТОРЫNEWИDELETE........................................................................................ 167 4.10.ОПЕРАТОР"ЗАПЯТАЯ”................................................................................................ 168 4.11.ПОБИТОВЫЕ ОПЕРАТОРЫ......................................................................................... 169 4.12.КЛАССBITSET............................................................................................................ 172 4.13.ПРИОРИТЕТЫ............................................................................................................ 176 4.14.ПРЕОБРАЗОВАНИЯ ТИПОВ......................................................................................... 180 4.14.1.Неявное преобразование типов................................................................. 181 4.14.2.Арифметические преобразования типов................................................ 182 4.14.3.Явное преобразование типов...................................................................... 184 4.14.4.Устаревшая форма явного преобразования........................................... 187 4.15.ПРИМЕР: РЕАЛИЗАЦИЯ КЛАССАSTACK.................................................................... 189 5.ИНСТРУКЦИИ.................................................................................................................. 193 5.1.ПРОСТЫЕ И СОСТАВНЫЕ ИНСТРУКЦИИ...................................................................... 193 5.2.ИНСТРУКЦИИ ОБЪЯВЛЕНИЯ........................................................................................ 194 5.3.ИНСТРУКЦИЯIF........................................................................................................... 197 5.4.ИНСТРУКЦИЯSWITCH.................................................................................................. 206 5.5.ИНСТРУКЦИЯ ЦИКЛАFOR............................................................................................ 214 5.6.ИНСТРУКЦИЯWHILE.................................................................................................... 218 5.8.ИНСТРУКЦИЯDO WHILE.............................................................................................. 221 5.8.ИНСТРУКЦИЯBREAK.................................................................................................... 222 5.9.ИНСТРУКЦИЯCONTINUE.............................................................................................. 224 5.10.ИНСТРУКЦИЯGOTO................................................................................................... 224 5.11.ПРИМЕР СВЯЗАННОГО СПИСКА................................................................................. 226 5.11.1.Обобщенный список....................................................................................... 246 6.АБСТРАКТНЫЕ КОНТЕЙНЕРНЫЕ ТИПЫ................................................................. 253 6.1.СИСТЕМА ТЕКСТОВОГО ПОИСКА................................................................................. 253 6.2.ВЕКТОР ИЛИ СПИСОК?................................................................................................ 256 6.3.КАК РАСТЕТ ВЕКТОР?.................................................................................................. 258 6.4.КАК ОПРЕДЕЛИТЬ ПОСЛЕДОВАТЕЛЬНЫЙ КОНТЕЙНЕР?.............................................. 261 6.5.ИТЕРАТОРЫ................................................................................................................. 266 6.6.ОПЕРАЦИИ С ПОСЛЕДОВАТЕЛЬНЫМИ КОНТЕЙНЕРАМИ.............................................. 270 6.6.1.Удаление............................................................................................................. 272 6.6.2.Присваивание и обмен..................................................................................... 273 6.6.3.Обобщенные алгоритмы............................................................................... 273 6.7.ЧИТАЕМ ТЕКСТОВЫЙ ФАЙЛ......................................................................................... 275 6.8.ВЫДЕЛЯЕМ СЛОВА В СТРОКЕ...................................................................................... 278 6.9.ОБРАБАТЫВАЕМ ЗНАКИ ПРЕПИНАНИЯ........................................................................ 284 6.10.ПРИВОДИМ СЛОВА К СТАНДАРТНОЙ ФОРМЕ............................................................ 287 6.11.ДОПОЛНИТЕЛЬНЫЕ ОПЕРАЦИИ СО СТРОКАМИ........................................................ 290 6.12.СТРОИМ ОТОБРАЖЕНИЕ ПОЗИЦИЙ СЛОВ................................................................. 297 6.12.1.Определение объектаmapи заполнение его элементами.................. 297 6.12.2.Поиск и извлечение элемента отображения.......................................... 302 6.12.3.Навигация по элементам отображения.................................................. 303 6.12.4.Словарь............................................................................................................ 304 6.12.5.Удаление элементовmap............................................................................ 306 6.13.ПОСТРОЕНИЕ НАБОРА СТОП-СЛОВ.......................................................................... 307 6.13.1.Определение объектаsetизаполнениеегоэлементами................... 307 6.13.2.Поиск элемента............................................................................................. 309 6.13.3.Навигация по множеству............................................................................. 309 6.14.ОКОНЧАТЕЛЬНАЯ ПРОГРАММА.................................................................................. 310 6.15.КОНТЕЙНЕРЫMULTIMAPИMULTISET........................................................................ 313 6.16.СТЕК........................................................................................................................... 316 6.17.ОЧЕРЕДЬ И ОЧЕРЕДЬ С ПРИОРИТЕТАМИ................................................................... 318 6.18.ВЕРНЕМСЯ В КЛАССУISTACK.................................................................................... 319 7.ФУНКЦИИ......................................................................................................................... 323 7.1.ВВЕДЕНИЕ.................................................................................................................... 323 7.2.ПРОТОТИП ФУНКЦИИ................................................................................................... 326 7.2.1.Тип возвращаемого функцией значения..................................................... 326 7.2.2.Список параметров функции......................................................................... 327 7.2.3.Проверка типов формальных параметров................................................ 328 7.3.ПЕРЕДАЧА АРГУМЕНТОВ............................................................................................. 330 7.3.1.Параметры-ссылки.......................................................................................... 332 7.3.2.Параметры-ссылки и параметры-указатели........................................... 335 7.3.3.Параметры-массивы....................................................................................... 338 7.3.4.Абстрактные контейнерные типы в качестве параметров............... 341 7.3.5.Значения параметров по умолчанию.......................................................... 343 7.3.6.Многоточие....................................................................................................... 345 7.4.ВОЗВРАТ ЗНАЧЕНИЯ.................................................................................................... 348 7.4.1.Передача данных через параметры и через глобальные объекты..... 352 7.5.РЕКУРСИЯ.................................................................................................................... 354 7.6.ВСТРОЕННЫЕ ФУНКЦИИ.............................................................................................. 355 7.7.ДИРЕКТИВА СВЯЗЫВАНИЯEXTERN"C"A ................................................................... 356 7.8.ФУНКЦИЯMAIN():РАЗБОР ПАРАМЕТРОВ КОМАНДНОЙ СТРОКИ................................. 359 7.8.1.Класс для обработки параметров командной строки............................ 366 7.9.УКАЗАТЕЛИ НА ФУНКЦИИ............................................................................................. 368 7.9.1.Тип указателя на функцию............................................................................ 369 7.9.2.Инициализация и присваивание.................................................................... 370 7.9.3.Вызов................................................................................................................... 371 7.9.4.Массивыуказателейнафункции................................................................. 372 7.9.5.Параметры и тип возврата......................................................................... 373 7.9.6.Указатели на функции, объявленные какextern "C".................................. 376 8.ОБЛАСТЬ ВИДИМОСТИ И ВРЕМЯ ЖИЗНИ.............................................................. 379 8.1.ОБЛАСТЬ ВИДИМОСТИ................................................................................................ 379 8.1.1.Локальная область видимости.................................................................... 381 8.2.ГЛОБАЛЬНЫЕ ОБЪЕКТЫ И ФУНКЦИИ............................................................................ 384 8.2.1.Объявления и определения............................................................................ 384 8.2.2.Сопоставление объявлений в разных файлах............................................ 386 8.2.3.Несколько слов о заголовочных файлах...................................................... 387 8.3.ЛОКАЛЬНЫЕ ОБЪЕКТЫ................................................................................................ 390 8.3.1.Автоматические объекты............................................................................. 391 8.3.2.Регистровые автоматические объекты.................................................. 392 8.3.3.Статические локальные объекты.............................................................. 392 8.4.ДИНАМИЧЕСКИ РАЗМЕЩАЕМЫЕ ОБЪЕКТЫ.................................................................. 394 8.4.1.Динамическое создание и уничтожение единичных объектов.............. 395 8.4.2.Шаблонauto_ptrА............................................................................................. 398 8.4.3.Динамическое создание и уничтожение массивов................................... 402 8.4.4.Динамическое создание и уничтожение константных объектов........ 405 8.4.5.Оператор размещенияnewА....................................................................... 405 8.5.ОПРЕДЕЛЕНИЯ ПРОСТРАНСТВА ИМЕНА.................................................................... 408 8.5.1.Определения пространства имен............................................................... 410 8.5.2.Оператор разрешения области видимости............................................. 412 8.5.3.Вложенные пространства имен................................................................... 414 8.5.4.Определение члена пространства имен.................................................... 416 8.5.5.ПОО и члены пространства имен............................................................... 418 8.5.6.Безымянные пространства имен................................................................ 420 8.6.ИСПОЛЬЗОВАНИЕ ЧЛЕНОВ ПРОСТРАНСТВА ИМЕНА.................................................. 422 8.6.1.Псевдонимы пространства имен................................................................. 422 8.6.2. Using-объявления............................................................................................. 424 8.6.3. Using-директивы.............................................................................................. 425 8.6.4.Стандартное пространство именstd....................................................... 428 9.ПЕРЕГРУЖЕННЫЕ ФУНКЦИИ..................................................................................... 431 9.1.ОБЪЯВЛЕНИЯ ПЕРЕГРУЖЕННЫХ ФУНКЦИЙ................................................................ 431 9.1.1.Зачем нужно перегружать имя функции.................................................... 431 9.1.2.Как перегрузить имя функции...................................................................... 432 9.1.3.Когда не надо перегружать имя функции.................................................. 434 9.1.4.Перегрузка и область видимостиA ............................................................ 436 9.1.5.Директиваextern "C"и перегруженные функцииA .................................. 440 9.1.6.Указатели на перегруженные функцииA ................................................... 440 9.1.7.Безопасное связываниеA ............................................................................... 441 9.2.ТРИ ШАГА РАЗРЕШЕНИЯ ПЕРЕГРУЗКИ......................................................................... 443 9.3.ПРЕОБРАЗОВАНИЯ ТИПОВ АРГУМЕНТОВA ................................................................ 445 9.3.1.Подробнее о точном соответствии.......................................................... 447 9.3.2.Подробнее о расширении типов................................................................... 452 9.3.3.Подробнее о стандартном преобразовании............................................. 454 9.3.4.Ссылки................................................................................................................ 458 9.4.ДЕТАЛИ РАЗРЕШЕНИЯ ПЕРЕГРУЗКИ ФУНКЦИЙ............................................................ 461 9.4.1.Функции-кандидаты......................................................................................... 461 9.4.2.Устоявшие функции........................................................................................ 466 9.4.3.Наилучшая из устоявших функция.............................................................. 468 9.4.4.Аргументысозначениямипоумолчанию.................................................. 473 10.ШАБЛОНЫ ФУНКЦИЙ................................................................................................. 475 10.1.ОПРЕДЕЛЕНИЕ ШАБЛОНА ФУНКЦИИ......................................................................... 475 10.2.КОНКРЕТИЗАЦИЯ ШАБЛОНА ФУНКЦИИ...................................................................... 483 10.3.ВЫВОД АРГУМЕНТОВ ШАБЛОНАА............................................................................ 485 10.4.ЯВНОЕ ЗАДАНИЕ АРГУМЕНТОВ ШАБЛОНАA.............................................................. 490 10.5.МОДЕЛИ КОМПИЛЯЦИИ ШАБЛОНОВА...................................................................... 494 10.5.1.Модель компиляции с включением............................................................. 494 10.5.2.Модель компиляции с разделением............................................................ 495 10.5.3.Явные объявления конкретизации............................................................. 497 10.6.ЯВНАЯ СПЕЦИАЛИЗАЦИЯ ШАБЛОНАА....................................................................... 498 10.7.ПЕРЕГРУЗКА ШАБЛОНОВ ФУНКЦИЙА....................................................................... 503 10.8.РАЗРЕШЕНИЕ ПЕРЕГРУЗКИ ПРИ КОНКРЕТИЗАЦИИA................................................ 506 10.9.РАЗРЕШЕНИЕ ИМЕН В ОПРЕДЕЛЕНИЯХ ШАБЛОНОВА............................................. 514 10.10.ПРОСТРАНСТВА ИМЕН И ШАБЛОНЫ ФУНКЦИЙА................................................... 520 10.11.ПРИМЕР ШАБЛОНА ФУНКЦИИ.................................................................................. 525 11.ОБРАБОТКА ИСКЛЮЧЕНИЙ..................................................................................... 529 11.1.ВОЗБУЖДЕНИЕ ИСКЛЮЧЕНИЯ................................................................................... 529 11.2.TRY-БЛОК................................................................................................................... 532 11.3.ПЕРЕХВАТ ИСКЛЮЧЕНИЙ.......................................................................................... 536 11.3.1.Объекты-исключения.................................................................................... 537 11.3.2.Раскрутка стека............................................................................................ 540 11.3.3.Повторное возбуждение исключения........................................................ 541 11.3.4.Перехват всех исключений.......................................................................... 542 11.4.СПЕЦИФИКАЦИИ ИСКЛЮЧЕНИЙ................................................................................ 544 11.4.1.Спецификации исключений и указатели на функции.............................. 547 11.5.ИСКЛЮЧЕНИЯ И ВОПРОСЫ ПРОЕКТИРОВАНИЯ........................................................ 548 12.ОБОБЩЕННЫЕ АЛГОРИТМЫ.................................................................................. 551 12.1.КРАТКИЙ ОБЗОР........................................................................................................ 551 12.2.ИСПОЛЬЗОВАНИЕ ОБОБЩЕННЫХ АЛГОРИТМОВ....................................................... 555 12.3.ОБЪЕКТЫ-ФУНКЦИИ................................................................................................... 564 12.3.1.Предопределенные объекты-функции...................................................... 566 12.3.2.Арифметические объекты-функции.......................................................... 568 12.3.3.Сравнительные объекты-функции............................................................. 569 12.3.4.Логические объекты-функции..................................................................... 570 12.3.5.Адаптеры функций для объектов-функций............................................. 571 12.3.6.Реализация объекта-функции.................................................................... 571 12.4.ЕЩЕ РАЗ ОБ ИТЕРАТОРАХ......................................................................................... 573 12.4.1.Итераторы вставки..................................................................................... 574 12.4.2.Обратные итераторы.................................................................................. 576 12.4.3.Потоковые итераторы............................................................................... 576 12.4.4.Итераторistream_iterator ............................................................................. 577 12.4.5.Итераторostream_iterator........................................................................... 578 12.4.6.Пять категорий итераторов.................................................................... 580 12.5.ОБОБЩЕННЫЕ АЛГОРИТМЫ...................................................................................... 581 12.5.1.Алгоритмы поиска......................................................................................... 583 12.5.2.Алгоритмы сортировки и упорядочения.................................................. 583 12.5.3.Алгоритмы удаления и подстановки......................................................... 584 12.5.4.Алгоритмы перестановки............................................................................ 584 12.5.5.Численные алгоритмы................................................................................... 584 12.5.6.Алгоритмы генерирования и модификации.............................................. 584 12.5.7.Алгоритмы сравнения................................................................................... 584 12.5.8.Алгоритмы работы с множествами.......................................................... 585 12.5.9.Алгоритмы работы с хипом......................................................................... 585 12.6. КОГДА НЕЛЬЗЯ ИСПОЛЬЗОВАТЬ ОБОБЩЕННЫЕ АЛГОРИТМЫ............................. 585 12.6.1.Операцияlist_merge()..................................................................................... 586 12.6.2.Операцияlist::remove() .................................................................................... 587 12.6.3.Операцияlist::remove_if() ............................................................................... 587 12.6.4.Операцияlist::reverse()................................................................................... 587 12.6.5.Операцияlist::sort()......................................................................................... 588 12.6.6.Операцияlist::splice()...................................................................................... 588 12.6.7.Операцияlist::unique().................................................................................... 589 13.КЛАССЫ......................................................................................................................... 592 13.1.ОПРЕДЕЛЕНИЕ КЛАССА.............................................................................................. 592 13.1.1.Данные-члены................................................................................................. 593 13.1.2.Функции-члены................................................................................................ 594 13.1.3.Доступ к членам............................................................................................. 596 13.1.4.Друзья............................................................................................................... 597 13.1.5.Объявление и определение класса............................................................ 598 13.2.ОБЪЕКТЫ КЛАССОВ................................................................................................... 599 13.3.ФУНКЦИИ-ЧЛЕНЫ КЛАССА......................................................................................... 602 13.3.1.Когда использовать встроенные функции-члены.................................. 603 13.3.2.Доступ к членам класса................................................................................. 604 13.3.3.Закрытыеиоткрытыефункции-члены................................................... 605 13.3.4.Специальные функции-члены...................................................................... 608 13.3.5.Функции-члены со спецификаторамиconstиvolatile............................. 609 13.3.6.Объявлениеmutable....................................................................................... 612 13.4.НЕЯВНЫЙ УКАЗАТЕЛЬTHIS....................................................................................... 614 13.4.1.Когда использовать указательthis........................................................... 616 13.5.СТАТИЧЕСКИЕ ЧЛЕНЫ КЛАССА.................................................................................. 618 13.5.1.Статические функции-члены..................................................................... 623 13.6.УКАЗАТЕЛЬ НА ЧЛЕН КЛАССА.................................................................................... 625 13.6.1.Тип члена класса............................................................................................ 628 13.6.2.Работа с указателями на члены класса.................................................... 630 13.6.3. Указатели на статические члены класса................................................ 633 13.7.ОБЪЕДИНЕНИЕ–КЛАСС, ЭКОНОМЯЩИЙ ПАМЯТЬ................................................... 635 13.8.БИТОВОЕ ПОЛЕ–ЧЛЕН, ЭКОНОМЯЩИЙ ПАМЯТЬ..................................................... 640 13.9.ОБЛАСТЬ ВИДИМОСТИ КЛАССАA ............................................................................. 642 13.9.1.Разрешение имен в области видимости класса.................................... 646 13.10.ВЛОЖЕННЫЕ КЛАССЫA ......................................................................................... 649 13.10.1.Разрешение имен в области видимости вложенного класса........... 656 13.11.КЛАССЫ КАК ЧЛЕНЫ ПРОСТРАНСТВА ИМЕНA........................................................ 659 13.12.ЛОКАЛЬНЫЕ КЛАССЫA........................................................................................... 663 14.ИНИЦИАЛИЗАЦИЯ, ПРИСВАИВАНИЕ И УНИЧТОЖЕНИЕ КЛАССА.................. 665 14.1.ИНИЦИАЛИЗАЦИЯ КЛАССА........................................................................................ 665 14.2.КОНСТРУКТОР КЛАССА.............................................................................................. 667 14.2.1.Конструктор по умолчанию........................................................................ 673 14.2.2.Ограничение прав на создание объекта.................................................... 675 14.2.3.Копирующий конструктор........................................................................... 676 14.3.ДЕСТРУКТОР КЛАССА................................................................................................ 678 14.3.1.Явный вызов деструктора.......................................................................... 682 14.3.2.Опасность увеличения размера программы........................................... 683 14.4.МАССИВЫ И ВЕКТОРЫ ОБЪЕКТОВ............................................................................ 684 14.4.1.Инициализация массива, распределенного из хипаA ............................ 686 14.4.2.Вектор объектов........................................................................................... 689 14.5.СПИСОК ИНИЦИАЛИЗАЦИИ ЧЛЕНОВ.......................................................................... 691 14.6.ПОЧЛЕННАЯ ИНИЦИАЛИЗАЦИЯA.............................................................................. 698 14.6.1.Инициализация члена, являющегося объектом класса........................ 701 14.7.ПОЧЛЕННОЕ ПРИСВАИВАНИЕA................................................................................ 704 14.8.СООБРАЖЕНИЯ ЭФФЕКТИВНОСТИA ........................................................................ 707 15.ПЕРЕГРУЖЕННЫЕ ОПЕРАТОРЫ И ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ ПРЕОБРАЗОВАНИЯ........................................................................................................... 714 15.1.ПЕРЕГРУЗКА ОПЕРАТОРОВ....................................................................................... 714 15.1.1.Членыине членыкласса.............................................................................. 718 15.1.2.Имена перегруженных операторов........................................................... 721 15.1.3.Разработка перегруженных операторов................................................. 722 15.2.ДРУЗЬЯ....................................................................................................................... 724 15.3.ОПЕРАТОР=.............................................................................................................. 727 15.4.ОПЕРАТОР ВЗЯТИЯ ИНДЕКСА.................................................................................... 730 15.5.ОПЕРАТОР ВЫЗОВА ФУНКЦИИ.................................................................................. 731 15.6.ОПЕРАТОР"СТРЕЛКА”............................................................................................... 732 15.7.ОПЕРАТОРЫ ИНКРЕМЕНТА И ДЕКРЕМЕНТА............................................................... 734 15.8.ОПЕРАТОРЫNEWИDELETE..................................................................................... 738 15.8.1.Операторыnew[ ]иdelete [ ]....................................................................... 742 15.8.2.Оператор размещенияnew()иоператорdelete().................................. 744 15.9.ОПРЕДЕЛЕННЫЕ ПОЛЬЗОВАТЕЛЕМ ПРЕОБРАЗОВАНИЯ........................................... 747 15.9.1.Конвертеры..................................................................................................... 751 15.9.2.Конструктор как конвертер....................................................................... 755 15.10.ВЫБОР ПРЕОБРАЗОВАНИЯA.................................................................................. 757 15.10.1.Еще раз о разрешении перегрузки функций.......................................... 761 15.10.2.Функции-кандидаты.................................................................................... 761 15.10.3.Функции-кандидаты для вызова функции в области видимости класса ......................................................................................................................................... 763 15.10.4.Ранжирование последовательностей определенных пользователем преобразований........................................................................................................... 765 15.11.РАЗРЕШЕНИЕ ПЕРЕГРУЗКИ И ФУНКЦИИ-ЧЛЕНЫA.................................................. 770 15.11.1.Объявления перегруженных функций-членов........................................ 770 15.11.2.Функции-кандидаты...................................................................................... 771 15.11.3.Устоявшие функции.................................................................................... 772 15.12.РАЗРЕШЕНИЕ ПЕРЕГРУЗКИ И ОПЕРАТОРЫA ......................................................... 775 15.12.1.Операторные функции-кандидаты......................................................... 776 15.12.2.Устоявшие функции.................................................................................... 780 15.12.3.Неоднозначность......................................................................................... 781 16.ШАБЛОНЫ КЛАССОВ................................................................................................. 784 16.1.ОПРЕДЕЛЕНИЕ ШАБЛОНА КЛАССА............................................................................ 784 16.1.1.Определения шаблонов классовQueueиQueueItem............................. 790 16.2.КОНКРЕТИЗАЦИЯ ШАБЛОНА КЛАССА......................................................................... 793 16.2.1.Аргументы шаблона для параметров-констант.................................. 797 16.3.ФУНКЦИИ-ЧЛЕНЫ ШАБЛОНОВ КЛАССОВ................................................................... 802 16.3.1.Функции-члены шаблоновQueueиQueueItem......................................... 803 16.4.ОБЪЯВЛЕНИЯ ДРУЗЕЙ В ШАБЛОНАХ КЛАССОВ......................................................... 806 16.4.1.Объявления друзей в шаблонахQueueиQueueItem.............................. 808 16.5.СТАТИЧЕСКИЕ ЧЛЕНЫ ШАБЛОНОВ КЛАССА.............................................................. 812 16.6.ВЛОЖЕННЫЕ ТИПЫ ШАБЛОНОВ КЛАССОВ................................................................ 814 16.7.ШАБЛОНЫ-ЧЛЕНЫ..................................................................................................... 817 16.8.ШАБЛОНЫ КЛАССОВ И МОДЕЛЬ КОМПИЛЯЦИИA..................................................... 822 16.8.1.Модель компиляции с включением.............................................................. 824 16.8.2.Модель компиляции с разделением............................................................ 825 16.8.3.Явные объявления конкретизации.............................................................. 828 16.9.СПЕЦИАЛИЗАЦИИ ШАБЛОНОВ КЛАССОВA ............................................................... 829 16.10.ЧАСТИЧНЫЕ СПЕЦИАЛИЗАЦИИ ШАБЛОНОВ КЛАССОВA ........................................ 833 16.11.РАЗРЕШЕНИЕ ИМЕН В ШАБЛОНАХ КЛАССОВA....................................................... 834 16.12.ПРОСТРАНСТВА ИМЕН И ШАБЛОНЫ КЛАССОВ........................................................ 837 16.13.ШАБЛОН КЛАССАARRAY......................................................................................... 839 17.НАСЛЕДОВАНИЕ И ПОДТИПИЗАЦИЯ КЛАССОВ................................................. 849 17.1.ОПРЕДЕЛЕНИЕ ИЕРАРХИИ КЛАССОВ........................................................................ 852 17.1.1.Объектно-ориентированное проектирование....................................... 855 17.2.ИДЕНТИФИКАЦИЯ ЧЛЕНОВ ИЕРАРХИИ...................................................................... 860 17.2.1.Определение базового класса..................................................................... 860 17.2.2.Определение производных классов............................................................ 865 17.2.3.Резюме.............................................................................................................. 868 17.3.ДОСТУП К ЧЛЕНАМ БАЗОВОГО КЛАССА..................................................................... 870 17.4.КОНСТРУИРОВАНИЕ БАЗОВОГО И ПРОИЗВОДНОГО КЛАССОВ................................. 878 17.4.1.Конструктор базового класса.................................................................... 880 17.4.2.Конструктор производного класса............................................................ 881 17.4.3.Альтернативная иерархия классов.......................................................... 883 17.4.4.Отложенное обнаружение ошибок............................................................ 885 17.4.5.Деструкторы.................................................................................................. 886 17.5.ВИРТУАЛЬНЫЕ ФУНКЦИИ В БАЗОВОМ И ПРОИЗВОДНОМ КЛАССАХ.......................... 889 17.5.1.Виртуальный ввод/вывод............................................................................. 890 17.5.2.Чисто виртуальные функции..................................................................... 896 17.5.3.Статический вызов виртуальной функции............................................. 898 17.5.4.Виртуальные функции и аргументы по умолчанию.............................. 900 17.5.5.Виртуальные деструкторы........................................................................ 902 17.5.6.Виртуальная функцияeval()........................................................................ 904 17.5.7.Почти виртуальный операторnew.......................................................... 908 17.5.8.Виртуальные функции, конструкторы и деструкторы...................... 910 17.6.ПОЧЛЕННАЯ ИНИЦИАЛИЗАЦИЯ И ПРИСВАИВАНИЕA................................................ 913 17.7.УПРАВЛЯЮЩИЙ КЛАССUSERQUERY........................................................................ 918 17.7.1.Определение классаUserQuery................................................................... 922 17.8.СОБЕРЕМ ВСЕ ВМЕСТЕ.............................................................................................. 927 18.МНОЖЕСТВЕННОЕ И ВИРТУАЛЬНОЕ НАСЛЕДОВАНИЕ................................... 934 18.1.ГОТОВИМ СЦЕНУ....................................................................................................... 934 18.2.МНОЖЕСТВЕННОЕ НАСЛЕДОВАНИЕ.......................................................................... 938 18.3.ОТКРЫТОЕ, ЗАКРЫТОЕ И ЗАЩИЩЕННОЕ НАСЛЕДОВАНИЕ....................................... 946 18.3.1.Наследование и композиция........................................................................ 948 18.3.2.Открытие отдельных членов.................................................................... 950 18.3.3.Защищенное наследование.......................................................................... 951 18.3.4.Композиция объектов................................................................................... 951 18.4.ОБЛАСТЬ ВИДИМОСТИ КЛАССА И НАСЛЕДОВАНИЕ................................................... 953 18.4.1.Область видимости класса при множественном наследовании....... 956 18.5.ВИРТУАЛЬНОЕ НАСЛЕДОВАНИЕA ............................................................................ 962 18.5.1.Объявление виртуального базового класса........................................... 964 18.5.2.Специальная семантика инициализации.................................................. 966 18.5.3.Порядок вызова конструкторов и деструкторов.................................. 969 18.5.4.Видимость членов виртуального базового класса............................... 971 18.6.ПРИМЕР МНОЖЕСТВЕННОГО ВИРТУАЛЬНОГО НАСЛЕДОВАНИЯA........................... 975 18.6.1.Порождение класса, контролирующего выход за границы массива.. 978 18.6.2.Порождение класса отсортированного массива................................... 980 18.6.3.Класс массива с множественным наследованием.................................. 986 19.ПРИМЕНЕНИЕ НАСЛЕДОВАНИЯ ВC++.................................................................. 989 19.1.ИДЕНТИФИКАЦИЯ ТИПОВ ВО ВРЕМЯ ВЫПОЛНЕНИЯ................................................. 989 19.1.1.Операторdynamic_cast................................................................................ 990 19.1.2.Операторtypeid............................................................................................. 995 19.1.3.Классtype_info................................................................................................. 997 19.2.ИСКЛЮЧЕНИЯ И НАСЛЕДОВАНИЕ............................................................................ 1001 19.2.1.Исключения, определенные как иерархии классов............................... 1001 19.2.2.Возбуждениеисключениятипакласса................................................... 1002 19.2.3.Обработка исключения типа класса...................................................... 1003 19.2.4.Объекты-исключения и виртуальные функции.................................... 1006 19.2.5.Раскрутка стека и вызов деструкторов............................................... 1008 19.2.6.Спецификации исключений........................................................................ 1009 19.2.7.Конструкторы и функциональныеtry-блоки.......................................... 1012 19.2.8.Иерархия классов исключений в стандартной библиотекеC++..... 1014 19.3.РАЗРЕШЕНИЕ ПЕРЕГРУЗКИ И НАСЛЕДОВАНИЕA.................................................... 1018 19.3.1.Функции-кандидаты..................................................................................... 1019 19.3.2.Устоявшие функции и последовательности пользовательских преобразований......................................................................................................... 1022 19.3.3.Наилучшая из устоявших функций.......................................................... 1024 20.БИБЛИОТЕКАIOSTREAM......................................................................................... 1028 20.1.ОПЕРАТОР ВЫВОДА<<............................................................................................ 1032 20.2.ВВОД........................................................................................................................ 1038 20.2.1.Строковый ввод........................................................................................... 1043 20.3.ДОПОЛНИТЕЛЬНЫЕ ОПЕРАТОРЫ ВВОДА/ВЫВОДА................................................. 1049 20.4.ПЕРЕГРУЗКА ОПЕРАТОРА ВЫВОДА.......................................................................... 1055 20.5.ПЕРЕГРУЗКА ОПЕРАТОРА ВВОДА............................................................................ 1059 20.6.ФАЙЛОВЫЙ ВВОД/ВЫВОД....................................................................................... 1062 20.7.СОСТОЯНИЯ ПОТОКА.............................................................................................. 1072 20.8.СТРОКОВЫЕ ПОТОКИ.............................................................................................. 1074 20.9.СОСТОЯНИЕ ФОРМАТА............................................................................................ 1078 20.10.СИЛЬНО ТИПИЗИРОВАННАЯ БИБЛИОТЕКА........................................................... 1086 21.ОБОБЩЕННЫЕ АЛГОРИТМЫ В АЛФАВИТНОМ ПОРЯДКЕ............................ 1088 | |
Просмотров: 927 | Загрузок: 906 | Рейтинг: 3.5/4 |
Всего комментариев: 0 | |