С. Прата - Язык программирования C++. Лекции и упражнения (1119511), страница 2
Текст из файла (страница 2)
Объекты и классыПроцедурное и объектно-ориентированное программированиеАбстрагирование и классыЧто представляет собой типКлассОбщедоступный или приватный?Реализация классов и функций-элементовПримечания, касающиеся функций-элементовВстроенные методыВыбор объектаИспользование классовТекущее состояние делДеструкторы и конструкторы классов216217218219220221221224224225226227228228229230231233234235235236236237238238240241241241242243245245246247247249250251252252253254255Объявление и определение конструкторовИспользование конструктораКонструктор, заданный по умолчаниюДеструкторыСовершенствование класса StockЗаголовочный файлФайл реализацииКлиентский файлПримечания к программеФункции-элементы типа constОбзор конструкторов и деструкторовРабота с указателем thisМассив объектовДиапазон доступа классаАбстрактный тип данныхРезюмеВопросы для повторенияУпражнения по программированиюГлава 10.
Работа с классамиПерегрузка операцийВремя в нашем распоряженииДобавление операции сложенияОграничения при выполнении перегрузкиДругие перегруженные операцииИспользование дружественных структурСоздание дружественных конструкцийОбщий вид дружественной конструкции: перегрузка операции <<Первая версия перегрузки операции <<Вторая версия перегрузки операции <<Перегруженные операции: дружественные и обычные функцииПерегрузка: класс VectorИспользование элементов состоянияЕще немного о перегрузкеУмножениеНекоторые уточнения: перегрузка и перегруженная операцияКомментарий к реализацииПрименение класса Vector к решению задачи случайного блужданияПримечания к программеАвтоматические преобразования и приведение типов для классовПримечания к программеФункции преобразованияАвтоматическое выполнение преобразования типовПреобразования и дружественные конструкцииОсуществление выбораРезюме256256257258258259259260260261262263266267268271272272274275276277278279280281282282283285286291291292292293293295295298299300302303303Вопросы для повторенияУпражнения по программированиюГлава 11.
Классы и динамическое распределение памятиДинамическая память и классыОбзорный пример и элементы статических классовПримечания к программеНовый подход к использованию операторов new и deleteУстранение проблем, связанных с классом StringНеявные функции-элементыКонструктор, заданный по умолчаниюКонструктор копированияУсловия применения конструктора копированияФункции конструктора копированияК чему могут привести возможные ошибкиОператор присваиванияПрименение оператора присваиванияФункции оператора присваиванияК чему могут привести возможные ошибкиФиксированное присваиваниеНовый, усовершенствованный класс StringПрименение оператора new в конструкторахПрименение указателей при работе с объектамиОбзор технических методовПерегрузка операции <<Функции преобразованияКлассы, конструкторы которых применяют оператор newМоделирование очередиКласс QueueИнтерфейсРеализацияМетоды классаНемного сведений о других методах классовКласс CustomerМоделированиеРезюмеВопросы для повторенияУпражнения по программированиюГлава 12.
Наследование классовПростой базовый классНаследование — отношение is-aОбъявление производного классаРеализация производного классаИнициализация объектов объектамиДругие функции-элементыПримечания к программе304305306306307311313314315315315315316316318318319319319320325326328328329329329330330330332334335338341342343345346347349351352352355Управление доступом — protectedОтношение is-a, ссылки и указателиВиртуальные функции-элементыАктивизация динамического связыванияЗачем нужны два вида связывания?Как работают виртуальные функцииЧто следует знать о виртуальных функцияхКонструкторыДеструкторыДружественные конструкцииОтсутствие переопределенияПереопределение скрывает методыНаследование и присваиваниеСмешанное присваиваниеПрисваивание и динамическое распределение памятиСлучай 1.
Производный класс не использует оператор newСлучай 2. Производный класс использует оператор newАбстрактные базовые классыОбзор структуры классаФункции-элементы, которые генерирует компиляторЗаданный по умолчанию конструкторКонструктор копированияОператор присваиванияДругие соображения по поводу методов классаКонструкторыДеструкторыПреобразованияПередача объекта по значению и передача по ссылкеВозврат объекта и ссылкиИспользование constСоображения по поводу общедоступного наследованияОтношение is-aКакие объекты не наследуютсяОператор присваиванияПриватные и защищенные элементыВиртуальные методыДеструкторыИтоговый анализ функций классаРезюмеВопросы для повторенияУпражнения по программированиюГлава 13. Повторное использование программного кода в C++Классы, включающие элементы объектовКласс ArrayDbРабота с operator[]()355356357358360361362362362362362362363364365366367370371371371372372372372372373373373374374374375375376376376377377378378381381382384Альтернатива с использованием спецификатора constПример класса StudentИнициализация включенных объектовИспользование интерфейса для включенного объектаИспользование нового классаПриватное наследованиеПример класса Student (новая версия)Инициализация компонентов базового классаИспользование методов базового классаИспользование измененного класса StudentВключение или приватное наследование?Защищенное наследованиеПереопределение доступа с помощью объявления usingШаблоны классовОпределение шаблона классаИспользование класса шаблонаБолее подробное рассмотрение шаблона классаНеправильное использование стека указателейКорректное использование стека указателейПримечания к программеШаблон массива и аргументы, не являющиеся типамиИспользование шаблона вместе с семейством классовПримечание к программеМногосторонность шаблонаСпециализации шаблоновНеявные образования экземпляровЯвные образования экземпляровЯвные специализацииЧастичные специализацииМножественное наследованиеОпределение количества рабочихВиртуальные базовые классыНовые правила конструктораВыбор методаСмешанные виртуальные и невиртуальные базовые классыВиртуальные базовые классы и доминированиеНекоторые итоги по теме множественного наследованияРезюмеВопросы для повторенияУпражнения по программированиюГлава 14.
Дружественные конструкции, исключения и прочееДружественные структурыДружественные классыДружественные функции-элементыДругие дружественные отношения384385385388389390390390391392393393394394395397398398399401401402406406408408408408409409410411412412414414419420421422424424424428429Общедоступные дружественные элементыШаблоны и дружественные элементыВложенные классыВложенные классы и доступДиапазон доступаУправление доступомВложение в шаблонеИсключенияПримечания к программеМеханизм исключенийПримечания к программеРазносторонность исключенийМногочисленные блоки tryРазворачивание стекаДополнительные опцииИсключения и классыИсключения и наследованиеКласс exceptionИсключение bad_alloc и оператор newПроблемы, связанные с исключениямиЗамечание об исключенияхБиблиотека RTTIНазначение RTTIПринципы функционирования RTTIОператор dynamic_castОператор typeid и класс type_infoПроблемы, возникающие при использовании RTTIОператоры приведения типовРезюмеВопросы для повторенияУпражнения по программированиюГлава 15.
Класс string и стандартная библиотека шаблоновКласс stringСоздание строкиПримечания к программеРеализация ввода в классе stringРабота со строкамиПримечания к программеЧто еще?Класс auto_ptrИспользование шаблона auto_ptrНекоторые замечанияСтандартная библиотека шаблоновКласс шаблонов vectorОперации, допустимые при работе с шаблонами vector431431432433433434434437439439439441442443444445446451453453455456456456457458461462463464464465465465466468469472472472473474475476477Дополнительные операции с векторамиОбобщенное программированиеПочему именно итераторы?Типы итераторовИтератор вводаИтератор выводаПрямой итераторДвусторонний итераторИтератор произвольного доступаИерархия итераторовКонцепции, уточнения и моделиУказатель как итераторИтераторы сору(), ostream_iterator и istream_iteratorДругие полезные итераторыТипы контейнеровКонцепция контейнераПоследовательностиКласс vectorКласс dequeКласс listПримечания к программеИнструментарий для работы с контейнером listКласс queueКласс priority_queueКласс stackАссоциативные контейнерыПример класса setПример класса multimapФункциональные объекты (функторы)Концепции функторовПредопределенные функторыАдаптируемые функторы и функции-адаптерыАлгоритмыГруппы алгоритмовОбщие свойстваИспользование STLДругие библиотекиРезюмеВопросы для повторенияУпражнения по программированиюГлава 16.
Ввод/вывод данных и работа с файламиОбзор ввода/вывода данных в C++Потоки и буферыПотоки, буферы и файл iostreamПеренаправление480483483486486486487487487488488489489490492493495496497497498499499499500500500503504505506507508509509510513513514514516516517518520Вывод с помощью coutПерегруженная операция <<Вывод и указателиКонкатенация выводаДругие методы класса ostreamОчистка буфера выводаФорматирование вывода с помощью coutИзменение системы счисления при выводеУстановка ширины полейСимволы-заполнителиУстановка точности при выводе чисел с плавающей точкойВывод замыкающих нулей и десятичной точкиПодробнее о функции setf()Стандартные манипуляторыЗаголовочный файл iomanipВвод данных с помощью cinКак cin >> рассматривает поток вводаСостояние потокаУстановка состоянияВвод/вывод и прерыванияЭффекты состояния потокаДругие методы класса istreamОдносимвольный вводВыбор формы односимвольного вводаСтроковый ввод: getline(), get() и ignore()Неожиданный строковый ВводДругие методы класса istreamПримечания к программеВвод/вывод файловПростой файловый ввод/выводОткрытие нескольких файловРабота в режиме командной строкиПроверка потока и функция is _open()Режимы файловДобавление к файлуДвоичные файлыПроизвольный доступ к файламВнутреннее форматированиеЧто дальше?РезюмеВопросы для повторенияУпражнения по программированиюПриложение А.