Математика | ||||
ПРАКТИЧЕСКИЙ КУРС TURB0C-Turbo C++ Москва 1993 236 | ||||
ПРАКТИЧЕСКИЙ КУРС TURB0C-Turbo C++ Москва 1993 236
Содержание Глава 1 Введение в Turbo C++.........................................1 Концепция объектно-ориентированного программирования............1 Определение основных понятий.......................................................1 Развитие концепций программирования..........................................1 Стоит ли игра свеч?.........................................................................4 От Си к C++.....................................................................................5 C++и ANSI С...................................................................................6 Использование прототипов функций................................................6 Ключевое слово void.........................................................................8 Классы памяти volatile и const..........................................................9 Регистровые переменные...............................................................10 Директивы «pragma.......................................................................11 От Turbo С к Turbo C++..................................................................13 VROOMM........................................................................................13 Поддержка встроенного языка ассемблера....................................13 Простые типы, не относящиеся к классам.....................................14 Строгий контроль типов.................................................................14 Операция ссылки............................................................................15 Объявления в блоках......................................................................17 Подставляемые функции................................................................18 Ключевые слова new и delete.........................................................19 Расширенная роль const.................................................................20 Операция разрешения контекста...................................................20 //Комментарии..............................................................................20 Анонимные объединения.'...............................................................21 Перегружаемые функции................................................................21 Классы............................................................................................23 Классы в Си....................................................................................24 Компенсация недостатков структур при помощи классов..............26 Пример класса - Address................................................................29 Конструкторы и деструкторы.......................................................... 30 Формат конструктора и деструктора..............................................31 Создание и уничтожение объектов.................................................31 Перегружаемые операции..............................................................34 Наследование.................................................................................38 Инициализация производных классов............................................39 Пример полного класса - BusinessAddress.....................................40 Множественное наследование.......................................................41 Рекомендации по использованию производных классов................41 виртуальные функции - полиморфизм...........................................41 Ввод-вывод потоком.......................................................................43 Заключение....................................................................................46 Содержание______________________ ____Ц Глава 2 Простыв типы и перегружаемые функци!и_С++ •• 47 Строгий контроль типов.................................................................47 Объявление простых типов................................................"'..........47 Типизованные выражения................................................","...........51 Адресация в процессорах семейства 80x86...................................52 Объявления указателей в C++.......................................................57 Указатели и их значения по умолчанию..........................................60 Предварительные объявления........................................................61 Пустые указатели...........................................................„,„.............61 Сверхбольшие (huge) объекты........................................,.............. 62 Операция ссылки..........................................................'..,,.............62 Ссылочные типы.............................................................^т..............64 Функции со ссылочными аргументами.............................-,.............65 Ссылочные функции.........................................................5;:.............66 Передача констант в качестве ссылочных аргументов....................67 Объявление переменных в блоках....................................4............68 Подставляемые функции..................................................t.............69 Вопросы эффективности....................................................,...........70 Проблемы, связанные с подставляемыми функциями....................71 Когда функция не может быть подставляемой...............................72 Ключевые слова new и delete.........................................................73 Перегружаемые функции...............................................................75 Компоновка по дополненным типами именам функций..................78 Компоновка C++ с модулями на Си...............................................81 Заключение....................................................................................83 Глава 3 Классы.............................................................. 83 Организация классов в C++...........................................................83 Что такое this?........................................................................А......86 Массивы объектов класса......................................................,........ 88 Указатели на компоненты класса...................................................90 Статические компоненты класса....................................................92 Компоненты перечислимого типа...................................................94 Друзья классов...............................................................................95 Объединения.................................................................................. 97 Конструкторы и деструкторы..................-....................................... 98 Конструкторы..........................................................................,,.„.. 98 Конструкторы по умолчанию...................................................iv'»... 99 Прочие конструкторы.........................................................,....$*., 100 Константы класса....................................................................:^.',1,0Й Конструкторы копирования-инициализации.............................ш.102 Инициализация объекта другим объектом того же класса.......ЖЯОЗ Передача объекта по значению................................................«я»03 Возврат объекта по значению............................................... Как это реализуется............................................................., Создание компонентных объектов......................................... Конструкторы и new.....................'..............................................*Bf~ Вызов new из конструктора.........................................................ш&\ Деструкторы.......................................................................... _/Н_______________________'__________________Содержание Вызов деструкторов.....................................................................114 Удаление компонентных объектов................................................115 Виртуальные деструкторы............................................................116 Инициализация объектов других типов........................................117 Выполнение функции до и после main().......................................118 Глобальные конструкторы............................................................118 Функция atexit()............................................................................118 Директивы # pragma начальной загрузки и выхода......................119 Порядок выполнения....................................................................120 Заключение..................................................................................120 лава 4 Перегруженные операции................................121 Эперациир++..............................................................................122 Эперации-друзья или компонентные операции?..........................125 Эперации приведения типов........................................................128 Виртуальные массивы..................................................................130 Виртуальный файловый массив....................................................131 Виртуальные массивы в расширенной памяти типа EMS.............133 Перегрузка new и delete...............................................................142 Простая операция operator new()..................................................142 Поставная операция operator new()..............................................,145 Структуры переменного размера.................................................147 Заключение..................................................................................148 лаве 5 Наследование классов.....................................149 Простое наследование.................................................................149 унаследованным компонентам.......................................150 оры для производных классов.......................................152 ные классы и объемлющие классы................................153 ;ы....................................................................................154 связных списков............................................................156 изм...............................................................................160 _ _ isAQ................................................................................162 Второй пример связного списка...................................................163 ные классы.....................................................................166 венное наследование.....................................................167 ование множественного наследования............................167 ция множественного наследования..................................168 начность объектов...........................................................168 'значность классов.............................................................170 базовых классов...............................................................171 !зные списки.......................................................................173 !ие с объемлющим классом................................................173 !ие с множественным наследованием.................................175 льное наследование..........................................................176 ение..................................................................................178 6 Потоки ввода-вывода.......................................178 h-вывод стандартного языка Си..............................................178 Ьые версии потоков C++........................................................179 Содержание Потоки C++ 2.0............................................... Операции вставки в поток............................... Типы операций вставки................................... Управление форматом....................................................; Буферизация................................................................... Операции вставки, определяемые пользователем Манипуляторы, определяемые пользователем, с ограниченными типами аргументов..................... Манипуляторы, определяемые пользователем, с общими типами аргументов................................ Операции извлечения из потока.................................!....j Операции извлечения, определяемые пользователем.....i Ввод-вывод в файлы............ Файлы пользователя Поиск в потоке......... Привязка потоков........ Указатели на потоки.... /I 17J 181 18с Обработка ошибок в потоках.............................................ж...... Прочие компонентные функции потоков............................$........ Смешанный ввод-вывод с использованием stdio.......................... Ввод-вывод в оперативной памяти............................................... Заключение ................................................................................... Глава 7 Средства Turbo C++ для опытных пользователей ..... Использование VROOMM..................................................,,.....;,.. Встроенный язык ассемблера...................................................... Псевдо-регистры и функция geninterruptQ....................... Ключевое слово asm......................................................... Функция _emit_............................................................... Функции прерывания....................................................... Специальные формы управления потоком | выполнения программы..........................................................,': Сигналы............ 213 Обработчик команды Control-Break, Заключение....................... Соглашения М В данной книге выполняются соглашения об именах, предлагаемые фирмой Borland. Все имена объектов целиком пишутся строчными буквами, за следующими исключениями: ti - Имена структур, классов и объединений начинаются с заглавно| буквы (например, struct Base). U * - Имена, задаваемые директивами 9 define, полностью т заглавными буквами (например, «define MAXARG3). | - В именах, состоящих из нескольких слов, все слова, за искл! нием первого, начинаются с большой буквы (например, baseObji - Имена переменных типа указатель заканчиваются словом Ptr I пример, baseObjectPtr). Глава 1 • Введение в Turbo C++ Глава 1 Введение в Turbo C++ Данная глава начинает изучение Turbo C++. В начальных разделах левы рассматриваются концепции, которые легли в основу объектно-|рйентированного программирования. Далее речь идет о средствах, никальных для C++. Сонцепцмя объектно-ориентированного программирования Язык C++, неразрывно связанный с концепцией объектно-ориенти-юванного программирования, явился результатом включения объек-но-ориентированных средств в язык программирования Си. Прежде ем мы сможем понять C++, нам необходимо вникнуть в саму идею бъектно-ориентированного программирования. )првд«лвние основных понятий Объектно-ориентированные языки обычно определяют следующим бразом: «Язык программирования является объектно-ориентирован-ЫМ, если он поддерживает четыре конкретных объектных свойства, азываемых абстракцией, инкапсуляцией, наследованием и полимор-)Измом.». Это определение требует некоторых пояснений. Объектно-ориентированное программирование представляет собой арадигму программирования. Парадигма программирования - это истема взглядов, с учетом которой решаются задачи программиро-ания Говорят, что язык программирования является объектно-ориенти-званным, если он поддерживает объектно-ориентированную пара-.ипмуШразумеется, термин «поддерживает» здесь относителен. В свое пвиШорили, поддерживает ли язык ассемблера структурное про-ование, на том основании, что на этом языке может быть «структурированный код. Однако, как правило, язык ассембле-•» не считает языком структурного программирования. Бьерн „>уп, «отец» C++, формулирует это так: «Говорят, что язык про-(рования поддерживает некоторый стиль программирования, | обеспечивает средства, делающие использование этого стиля lil» дела, универсальный язык программирования не может > тот или иной стиль программирования. Кто не слышал утвер-типа: «Я могу на любом языке писать, как на Фортране.»? мер, вполне можно создавать неструктурированные программы але, хотя именно Паскаль считается образцовым языком струк-) программирования. Действительно, Паскаль имеет оператор отя использование этого оператора принято считать антитезой "рного программирования. C++ является объектно-ориентиро-i языком, поскольку он поддерживает объектно-ориентирован-Нарадигму. ритме концепций программирования лая ранняя парадигма программирования может быть охаракте-ана как хаотическая. Здесь разработчик все усилия направляет Ьсредственно на решение проблемы, не задумываясь о том, каким Цена: 200руб. |
||||