Механические торговые системы на языке C++
Язык C++ используется для разработки механических торговых систем (МТС) — сводов полностью формализованных правил открытия, сопровождения и закрытия сделок при торговле на бирже или внебиржевых рынках ценных бумаг. МТС часто отождествляют с автоматическими системами (АТС) или торговыми роботами — программами для полной или частичной автоматизации деятельности трейдеров.
Процесс создания МТС на C++ включает несколько этапов:
Подключение к брокеру или бирже для получения данных и отправки ордеров. Для этого необходимо использовать API, предоставляемые брокером или биржей. Обычно это включает установление сетевого соединения (например, через TCP/IP или WebSocket) и обмен данными в определённом формате (например, FIX, JSON или бинарный протокол).
Получение данных о ценах, объёмах торгов и других рыночных параметрах. Данные могут быть получены в реальном времени (например, через потоковые API) или загружены из исторических источников.
Анализ данных для выявления торговых возможностей. Для этого можно использовать различные методы технического анализа, такие как расчёт индикаторов, поиск ценовых паттернов.
-
Стандарты программирования на С++
В напряженной обстановке, при жестких временных рамках люди обычно делают то, чему их учили, к чему они привыкли. Вот почему в больницах в пунктах первой помощи предпочитают опытных, тренированных сотрудников — даже хорошо обученные и знающие новички склонны к панике.
У разработчиков программного обеспечения регулярно возникают ситуации, когда что-то надо было сделать еще вчера — на позавчера. Когда на нас давит график работ (который к тому же имеет тенденцию сдвигаться в одном направлении, и то, что по плану должно было заработать завтра, от нас начинают требовать еще вчера...), мы работаем так, как приучены. Неряшливые программисты, которые даже при обычной неспешной работе не помнят о правильных принципах разработки программного обеспечения (а то и вовсе не знакомы с ними), при нехватке времени окажутся еще небрежнее, а их код будет изобиловать ошибками. Соответственно, программист, который выработал в себе хорошие привычки и регулярно ими пользуется, при "повышенном давлении" будет продолжать выдавать качественный код.
Предпочитайте предоставление абстрактных интерфейсов
Проектируйте и пишите безопасный в отношении ошибок код
-
C++.Бархатный путь
Алфавит (или множество литер) языка программирования C++ основывается на множестве символов таблицы кодов ASCII. Алфавит C++ включает
Язык и грамматика
-
Справочное руководство по C++
В тех случаях, когда для одного имени определено несколько (различных) описаний функций, это имя называется перегруженным. При использовании этого имени правильная функция выбирается с помощью сравнения типов фактических параметров с типами параметров в описаниях функций. К перегруженным именам неприменима операция получения адреса
Оператор выражение
-
Язык программирования C++ для профессионалов
С++ является языком программирования общего назначения. Естественная для него область применения - системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех операционных систем. Поэтому книга дает лишь описание собственно языка, не объясняя особенности конкретных реализаций, среды программирования или библиотек.
Читатель найдет в книге много примеров с классами, которые, несмотря на несомненную пользу, можно считать игрушечными. Такой стиль изложения позволяет лучше выделить основные понятия и полезные приемы, тогда как в настоящих, законченных программах они были бы скрыты массой деталей. Для большинства предложенных здесь классов, как то связанные списки, массивы, строки символов, матрицы, графические классы, ассоциативные массивы и т.д., - приводятся версии "со 100% гарантией" надежности и правильности, полученные на основе классов из самых разных коммерческих и некоммерческих программ. Многие из "промышленных" классов и библиотек получились как прямые или косвенные потомки игрушечных классов, приводимых здесь как примеры.
Предисловие
Выражение признательности
Предварительные замечания
Структура книги
Замечания по реализации
Упражнения
Замечания по проекту языка
Историческая справка
Сравнение языков С++ и С
Эффективность и структура
Философские замечания
Замечания о программировании на языке С++
Несколько полезных советов
Замечание для программистов на С
Язык программирования C++ для профессионалов
Введение
Парадигмы программирования
Процедурное программирование
Модульное программирование
Абстракция данных
Пределы абстракции данных
Объектно-ориентированное программирование
"Улучшенный С"
Программа и стандартный вывод
Переменные и арифметические операции
Указатели и массивы
Условные операторы и циклы
Функции
Модули
Поддержка абстракции данных
Инициализация и удаление
Присваивание и инициализация
Шаблоны типа
Обработка особых ситуаций
Преобразования типов
Множественные реализации
Поддержка объектно-ориентированного программирования
Механизм вызова
Проверка типа
Множественное наследование
Инкапсуляция
Пределы совершенства
Язык программирования C++ для профессионалов
Описания
Область видимости
Объекты и адреса
Время жизни объектов
Имена
Типы
Основные типы
Неявное преобразование типа
Производные типы
Тип void
Указатели
Массивы
Указатели и массивы
Структуры
Эквивалентность типов
Ссылки
Литералы
Целые константы
Константы с плавающей точкой
Символьные константы
Строки
Нуль
Поименованные константы
Перечисления
Экономия памяти
Поля
Объединения
Язык программирования C++ для профессионалов
Калькулятор
Анализатор
Функция ввода
Таблица имен
Обработка ошибок
Драйвер
Параметры командной строки
Сводка операций
Скобки
Порядок вычислений
Инкремент и декремент
Поразрядные логические операции
Преобразование типа
Свободная память
Сводка операторов
Выбирающие операторы
Оператор goto
Комментарии и расположение текста
Язык программирования C++ для профессионалов
Введение
Связывание
Заголовочные файлы
Единственный заголовочный файл
Множественные заголовочные файлы
Связывание с программами на других языках
Как создать библиотеку
Функции
Описания функций
Определения функций
Передача параметров
Возвращаемое значение
Параметр-массив
Перегрузка имени функции
Стандартные значения параметров
Неопределенное число параметров
Указатель на функцию
Макросредства
Язык программирования C++ для профессионалов
Введение и краткий обзор
Классы и члены
Функции-члены
Классы
Классы - 2
Ссылка на себя
Инициализация
Удаление
Подстановка
Интерфейсы и реализации
Альтернативные реализации
Законченный пример класса
Еще о классах
Друзья
Уточнение имени члена
Вложенные классы
Статические члены
Указатели на члены
Структуры и объединения
Конструкторы и деструкторы
Локальные переменные
Статическая память
Свободная память
Объекты класса как члены
Массивы объектов класса
Небольшие объекты
Язык программирования C++ для профессионалов
Введение и краткий обзор
Производные классы
Свободная память
Виртуальные конструкторы
Указание размещения
Функции-члены
Конструкторы и деструкторы
Иерархия классов
Поля типа
Виртуальные функции
Абстрактные классы
Пример законченной программы
Монитор экрана
Библиотека фигур
Прикладная программа
Множественное наследование
Множественное вхождение базового класса
Разрешение неоднозначности
Виртуальные базовые классы
Контроль доступа
Защищенные члены
Доступ к базовым классам
Язык программирования C++ для профессионалов
Введение
Операторные функции
Бинарные и унарные операции
Предопределенные свойства операций
Операторные функции и пользовательские типы
Пользовательские операции преобразования типа
Конструкторы
Операции преобразования
Неоднозначности
Литералы
Большие объекты
Присваивание и инициализация
Индексация
Вызов функции
Косвенное обращение
Инкремент и декремент
Строковый класс
Друзья и члены
Предостережения
Упражнения
Язык программирования C++ для профессионалов
Введение
Простой шаблон типа
Шаблоны типа для списка
Список с принудительной связью
Список без принудительной связи
Реализация списка
Итерация
Шаблоны типа для функций
Простой шаблон типа для глобальной функции
Производные классы позволяют ввести новые операции
Передача операций как параметров функций
Неявная передача операций
Введение операций с помощью параметров шаблонного класса
Разрешение перегрузки для шаблонной функции
Параметры шаблона типа
Шаблоны типа и производные классы
Задание реализации с помощью параметров шаблона
Ассоциативный массив
Упражнения
Язык программирования C++ для профессионалов
Обработка ошибок
Особые ситуации и традиционная обработка ошибок
Другие точки зрения на особые ситуации
Различение особых ситуаций
Имена особых ситуаций
Группирование особых ситуаций
Производные особые ситуации
Запросы ресурсов
Конструкторы и деструкторы
Предостережения
Исчерпание ресурса
Особые ситуации и конструкторы
Особые ситуации могут не быть ошибками
Задание интерфейса
Неожиданные особые ситуации
Неперехваченные особые ситуации
Другие способы обработки ошибок
Упражнения
Язык программирования C++ для профессионалов
Введение
Вывод
Вывод встроенных типов
Вывод пользовательских типов
Ввод
Ввод встроенных типов
Состояния потока
Ввод пользовательских типов
Форматирование
Класс ios
Связывание потоков
Поля вывода
Состояние формата
Вывод целых
Выравнивание полей
Вывод плавающих чисел
Манипуляторы
Стандартные манипуляторы ввода-вывода
Члены ostream
Члены istream
Файлы и потоки
Закрытие потоков
Строковые потоки
Буферизация
Ввод-вывод в С
Упражнения
Язык программирования C++ для профессионалов
Введение
Человеческий фактор
Свод правил
Список литературы с комментариями
Цели и средства
Процесс развития
Цикл развития
Цели проектирования
Шаги проектирования
Шаг определение классов
Шаг определение набора операций
Шаг указание зависимостей
Шаг определение интерфейсов
Перестройка иерархии классов
Использование моделей
Эксперимент и анализ
Тестирование
Сопровождение
Эффективность
Управление проектом
Повторное использование
Размер
Язык программирования C++ для профессионалов
Проектирование и язык программирования
Компоненты
Интерфейсы и реализации
Свод правил
Игнорирование классов
Игнорирование наследования
Игнорирование статического контроля типов
Гибридный проект
Классы
Что представляют классы?
Иерархии классов
Зависимости в рамках иерархии классов
Отношения принадлежности
Принадлежность и наследование
Отношения использования
Отношения внутри класса
Инварианты
Инкапсуляция
Программируемые отношения
Язык программирования C++ для профессионалов
Введение
Управление памятью
Сборщик мусора
Контейнеры и удаление
Функции размещения и освобождения
Упражнения
Конкретные типы
Абстрактные типы
Узловые классы
Динамическая информация о типе
Информация о типе
Класс Type_info
Как создать систему динамических запросов о типе
Расширенная динамическая информация о типе
Правильное и неправильное использование динамической информации о типе
Обширный интерфейс
Каркас области приложения
Интерфейсные классы
Управляющие классы
-
Четвертый Borland C++ и его окружение
Настоящий "мгновенный" курс C++ в сжатой и всеобъемлющей форме представляет программирование на С++, прежде всего, для программистов, владеющих основами традиционного Си, и дает возможность совершить быстрый переход к С++.
При отсутствии опыта работы с Cи и С++, возможно, по-началу, могут показаться трудными новые концепции, обсуждаемые здесь, но разбор (и эксперименты) с примерами помогут прояснить картину. Прежде, чем начать работу, окружите себя уже имеющимися у Вас учебными пособиями и руководствами по С++. Возможно одно из них пригодится для более детального изучения С++.
Несмотря на то, что каждая тема с помощью примеров и подробных разъяснений раскрывает основные идеи языка, для желающих стать настоящими хакерами рекомендуется дополнительно проработать книги Страуструпа.
Азы С++
Цветовое выделение синтаксиса
Файлы описания проектов
Шаблон TICVectorIteratorImp (vectimp.h)
Запуск и приостановка обновления экрана
Справочная информация по программированию
Файлы описания проектов
Прерывание выполнения программы
Макрокоманды сообщений Windows
Управляющие объекты Visual Basic
Класс TGauge (gauge.h)
Элементы данных
Подготовка программ для отладки
Реквизиты и объекты окон реквизита
Шаблон TMIDequeAsDoubleListIterator
Сообщения ввода
Управляющие сообщения
-
C++ Builder - вопросы программирования
Интерес к программированию постоянно растет. Это связано с развитием и внедрением в повседневную жизнь информационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, научиться программировать. Среди пользователей персональных компьютеров в настоящее время наиболее популярна операционная система Windows, и естественно, что тот, кто хочет программировать, хочет и писать программы, которые будут работать в Windows.
Несколько лет назад рядовому программисту оставалось только мечтать о создании своих собственных программ, работающих в Windows. Единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению на рынке целого ряда систем программирования, ориентированных на так называемую "быструю разработку", среди которых особо следует отметить Microsoft Visual Basic и Borland Delphi. В основе систем быстрой разработки (RAD-систем, Rapid Application Development — среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть работы по генерации кода программы, оставляя программисту работу по конструированию диалоговых окон и написанию функций обработки событий. Производительность программиста при использовании RAD систем фантастическая!
Успех и популярность Delphi вызвал желание фирмы Borland распространить методы быстрой разработки на область профессионального программирования, что и привело к появлению Borland C++ Builder.
Демонстрация возможностей C++ Builder
Работа с графикой
Компонент Animate
База данных и СУБД
Выбор базового класса
Ввод/вывод
Создание справочной системы
Программа InstallShield Express
Система проверки знаний
Приложение
-
Язык программирования C++ от Страуструпа
С++ является языком программирования общего назначения. Естественная для него область применения - системное программирование, понимаемое в широком смысле этого слова. Кроме того, С++ успешно используется во многих областях приложения, далеко выходящих за указанные рамки. Реализации С++ теперь есть на всех машинах, начиная с самых скромных микрокомпьютеров - до самых больших супер-ЭВМ, и практически для всех операционных систем. Поэтому книга дает лишь описание собственно языка, не объясняя особенности конкретных реализаций, среды программирования или библиотек.
Читатель найдет в книге много примеров с классами, которые, несмотря на несомненную пользу, можно считать игрушечными. Такой стиль изложения позволяет лучше выделить основные понятия и полезные приемы, тогда как в настоящих, законченных программах они были бы скрыты массой деталей. Для большинства предложенных здесь классов, как то связанные списки, массивы, строки символов, матрицы, графические классы, ассоциативные массивы и т.д., - приводятся версии "со 100% гарантией" надежности и правильности, полученные на основе классов из самых разных коммерческих и некоммерческих программ. Многие из "промышленных" классов и библиотек получились как прямые или косвенные потомки игрушечных классов, приводимых здесь как примеры.
Макросредства
Группирование особых ситуаций
Абстрактные типы
Простой шаблон типа
Таблица имен
-
Язык программирования C++. Вводный курс
В этой главе представлены основные элементы языка: встроенные типы данных, определения именованных объектов, выражений и операторов, определение и использование именованных функций. Мы посмотрим на минимальную законченную С++ программу, вкратце коснемся процесса компиляции этой программы, узнаем, что такое препроцессор, и бросим самый первый взгляд на поддержку ввода и вывода. Мы увидим также ряд простых, но законченных С++ программ.
Начинаем
Простые и составные инструкции
Глобальные объекты и функции
Раскрутка стека
Список инициализации членов
Доступ к членам базового класса
Строковый ввод
Разрешение перегрузки при конкретизации
Типы классов
-
Объектно-ориентированное программирование на C++
Прежде чем приступать к изучению объектно-ориентированного программирования (ООП) вспомним ряд положений, без понимания которых невозможно понять парадигму ООП. Одной из основных посылок для понимания такого метода программирования является четкое представление о типах данных, которые Вы собираетесь использовать в своей программе.
Минимизация и невидимость
Простые шутки
Система
Работа с сетью
Работа с железом
Полезные алгоритмы
Список литературы и ресурсы Интернета
-
Сишные трюки от мыщъха
Компилятор не может поместить переменную dst в регистр, поскольку если ячейки *x и *dst частично или полностью перекрываются, модификация ячейки *dst приводит к неожиданному изменению *x!
-
Объектно-ориентированное программирование на C++
Прежде чем приступать к изучению объектно-ориентированного программирования (ООП) вспомним ряд положений, без понимания которых невозможно понять парадигму ООП. Одной из основных посылок для понимания такого метода программирования является четкое представление о типах данных, которые Вы собираетесь использовать в своей программе.
А начнем мы разговор с вещей, которые большинство из Вас считает простыми и давно известными. Мы поговорим о базовых типах данных и о конструкторах новых типов, используемых в языке С. Для нас стало уже привычным в начале каждой программы, функции описывать переменные, c которыми мы собираемся оперировать. При этом Вы иногда обоснованно, иногда нет, присваиваете каждой переменной один из доступных в данном языке программирования типов. А почему нам доступны именно эти типы? Насколько адекватно они позволяют описывать моделируемый в программе мир? Можно ли использовать другие, более подходящие типы? На эти и множество других, еще не заданных вопросов, мы и попытаемся сегодня найти ответы.
Каждая используемая нами в программе переменная только тогда имеет смысл, когда может принимать какие-либо значения. Множество значений, которые может принимать переменная, играет столь важную роль для характеристики переменной, что оно называется типом переменной.
Порядок установки
Простейшее приложение Qt4
Интегрированная среда разработки
Обработка событий
Строка состояния
"Ручное" размещение
Создание диалогов с помощью QtDesigner
Работа с базами данных в Qt4
Подключение к базе данных и выполнение SQL-запросов
Работа с таблицами баз данных
Разработка модели и представления таблицы БД
Делегаты для ячеек таблицы
-
C++ 3d.Комментарии
Теперь немного про вызовы функций-членов для элементов контейнера с помощью механизма mem_fun(). Действительно, вариант for_each(lsp.begin(),lsp.end(),mem_fun(&Shape::draw)); // рисуем все фигуры
-
Программирование на С++ с помощью компилятора Borland C++ 5.02 и библиотеки OWL 5.00
Файл проекта нужен для объединения в один комплекс всех файлов, входящих в приложение. Обычно используется не менее трех файлов даже для самого простого приложения, которое практически ничего не умеет делать
-
Краткий курс по rmDC++
Вот смотрите в результатах он дал 2 файла подходящих по описанию, но если присмотреться, то первый файл это фильм Чужой против хищника не подходит, а вот второй файл вроде бы без названия, но справа где написано
-
Создание контроллеров автоматизации с помощью C++Builder
Отметим, что в приведенном выше примере рабочая книга и рабочие листы были созданы с применением параметров, предлагаемых по умолчанию. Каким образом можно изменить эти параметры?
-
Введение в язык Си++
C++ - универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьезного программиста. За исключением второстепенных деталей C++ является надмножеством языка программирования C. Помимо возможностей, которые дает C, C++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определенных пользователем. Такие объекты просты и надежны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод дает более короткие, проще понимаемые и легче контролируемые программы.
Ключевым понятием C++ является класс. Класс - это тип, определяемый пользователем. Классы обеспечивают скрытие данных, гарантированную инициализацию данных, неявное преобразование типов для типов, определенных пользователем, динамическое задание типа, контролируемое пользователем управление памятью и механизмы перегрузки операций. C++ предоставляет гораздо лучшие, чем в C, средства выражения модульности программы и проверки типов. В языке есть также усовершенствования, не связанные непосредственно с классами, включающие в себя символические константы, inline- подстановку функций, параметры функции по умолчанию, перегруженные имена функций, операции управления свободной памятью и ссылочный тип. В C++ сохранены возможности языка C по работе с основными объектами аппаратного обеспечения (биты, байты, слова, адреса и т.п.). Это позволяет весьма эффективно реализовывать типы, определяемые пользователем.
C++ и его стандартные библиотеки спроектированы так, чтобы обеспечивать переносимость. Имеющаяся на текущий момент реализация языка будет идти в большинстве систем, поддерживающих C. Из C++ программ можно использовать C библиотеки, и с C++ можно использовать большую часть инструментальных средств, поддерживающих программирование на C.
Размышления о программировании на C++
Вложенные Классы
Видимость имен членов
Побитовые логические операции
Свободная память
-
Язык программирования C++
Вернемся к примеру наследования, который мы рассматривали раньше. Мы ввели базовый класс Item, который представляет общие свойства всех единиц хранения в библиотеке. Но существуют ли объекты класса Item?
История и назначение языка Си++
Имена
Выражения
-
Учимся программировать на языке C++
В уроке 1 вы создали несколько программ на C++. В то время ваша цель заключалась в том, чтобы понять процесс создания и компиляции программ на C++, а не в том, чтобы понять операторы C++. В данном уроке вы впервые более внимательно рассмотрите операторы, из которых состоит программа на C++.
Уменьшение количества операторов
Оператор else
Следите за ошибками переполнения
-
Программирование на C++ глазами хакера
Здесь запускается цикл от 0 до 20, в котором указатель мышки переносится в случайную позицию с помощью функции SetCursorPos, которой нужно передать два параметра X и Y в виде целых чисел — координаты новой позиции курсора.
Перейти на страницу
Содержание
Благодарности
C++ глазами хакера
Введение
О книге
Кто такой хакер? Как им стать?
Минимизация и невидимость
Сжатие запускаемых файлов
Без окон, без дверей...
Простейшая программа
Ресурсы проекта
Код программы
Оптимизация программ
Итог
Правильное оформление окон
Интерфейс главного окна
Элементы управления
Диалоговые окна
Программирование на C++ глазами хакера
Система
Работа с чужыми окнами
Дрожь в ногах
Переключение экранов
Нестандартные окна
Безбашенные окна
Перемещение окна за любую область
Подсматриваем пароли
Динамическая библиотека для расшифровки паролей
Программа расшифровки пароля
От пользы к шутке
Мониторинг исполняемых файлов
Управление ярлыками на Рабочем столе
Анимация текста
Обновление иконки
Использование буфера обмена
Программирование на C++ глазами хакера
Работа с сетью
Теория сетей и сетевых протоколов
Сетевые протоколы
Протокол IP
Сопоставление адреса ARP и RARP
Транспортные протоколы
Быстрый UDP
Медленный , но надежный TCP
Прикладные протоколы — загадочный NetBIOS
NetBEUI
Сокеты Windows
Протоколы IPX/SPX
Сетевые порты
Работа с ресурсами сетевого окружения
Работа с ресурсами сетевого окружения - 3
Структура сети
Работа с сетью с помощью объектов Visual C++
Передача данных по сети с помощью CSocket
Работа напрямую с WinSock
Обработка ошибок
Запуск библиотеки
Создание сокета
Серверные функции
Клиентские функции
Обмен данными
Завершение соединения
Принцип работы протоколов без установки соединения
Примеры работы с сетью по протоколу TCP
Пример работы ТСР-сервера
Пример работы TCP-клиента
Анализ примера
Примеры работы по протоколу UDР
Пример работы UDP-сервера
Пример работы UDP-клиента
Обработка принимаемых данных
Прием и передача данных
Функция select
Простой пример использования функции select
Использование сокетов через события Windows
Асинхронная работа через объект события
Программирование на C++ глазами хакера
Работа с железом
Параметры сети
Изменение IP-адреса
Работа с СОМ-портом
Подвисшие файлы
Программирование на C++ глазами хакера
Полезные алгоритмы
Алгоритм приема/передачи данных
Самый быстрый сканер портов
Состояние локального компьютера
DHCP-сервер
Протокол ICMP
Определение пути пакета
ARP-протокол
Программирование на C++ глазами хакера
Заключение
Список литературы и ресурсы Интернета
Описание компакт-диска
Предметный указатель
-
Правила программирования на Си и Си++
Делается попытка дать средство для преодоления этой трудности в виде собрания практических правил программирования на Си++ и Си - правил, которые, надеюсь, уберегут вас от неприятностей, если вы будете их использовать с самого начала. Хотя большинство из приводимых здесь правил применимы равно при программировании как на Си, так и на Си++, я включил много материала, относящегося лишь к миру Си++ и сконцентрированного по мере возможности в заключительном разделе. Если вы программируете лишь на Си, то просто игнорируйте материал по Си++, встречающийся вам в более ранних разделах.
Откажитесь от выражений языка Си, когда программируете на Си++
Используйте закрытые базовые классы
-
Visual C++ для начинающих
Напишем программу, которая показывает, что одна из ячеек памяти занята под переменную iNum1 и содержит значение 2. Как программист, вы называете эту ячейку iNum1, но компьютер ссылается на эту ячейку памяти, используя определенное число. Ячейки памяти нумеруются в компьютере последовательно: 1, 2, 3, 4 и т.д
Некоторые сведения о программировании Windows-приложений
Программная среда Windows
Основы программирования под Windows
Преимущества использования MFC
Обзор среды Microsoft Developer Studio
Библиотека MFC
Архитектура приложения
Каркас приложения
Каркас приложений
Проект приложения
Использование средств разработки
Типы мастеров проектов
Преимущества мастеров проектов
Обзор возможностей ClassWizard
Имена, используемые в MFC
Первая программа на C++, типы данных и их размер
Адресация в С++
Применение указателей в C++
Соглашение об именах
Структуры в С++
Классы в C++.
Пример использования MFC в Visual C++.
Консольное приложение
Приложение типа Windows Application
Запись и считывание данных ( работа с файлами ).
Работа с файлами в C ( работает и в C++ )..
Работа с файлами с помощью MFC( классы CFile, CStdioFile, ... ) и стандартный класс MFC CFileDialog.
Класс CFile
Класс CMemFile
Класс CStdioFile
Примеры записи и чтения из файла
Создание и уничтожение таймера
Сообщение WM_TIMER
Первый способ использования таймера
Второй способ использования таймера
Пример Windows-приложения, использующего таймер
Методы класса CButton
Методы класса CEdit
Методы класса CListBox
Методы класса CComboBox
Методы класса CProgressCtrl
Методы класса CSliderCtrl
Методы класса CSpinButtonCtrl
Пример Windows-приложения, использующего стандартные ресурсы
Рассмотрим ряд аспектов создания и использования библиотек DLL:
При запуске приложение пытается
Первое, что необходимо сделать
Перед тем, как использовать функции
Затем следует получить дескриптор
Можно также сослаться на функцию
Сначала в заголовочном файле определяется
Файл библиотеки также несколько
Приведем теперь исходный код простого
Приведем теперь полностью исходный
Большинство библиотек DLL — просто
Синтаксис файлов с расширением
При использовании вышеприведенного
Допустим, имеется массив целых
Чтобы "вписаться" в структуру
Начиная с версии MFC позволяет
Рассмотрим теперь, как осуществляется
Панель выбора цвета (класс CColorDialog)
Панель выбора файлов (класс CFileDialog)
Панель выбора шрифта (класс CFontDialog)
Панель для вывода документов на печать (класс CPrintDialog)
Панель для выполнения поиска и замены (класс CFindReplaceDialog)
Описание класса CView
Объекты GDI
GDI-атрибуты контекста устройства
Методы для рисования линий и фигур
Пример графической программы с оптимизацией
Создание собственных диалоговых окон
Аргумент type задает режим взаимодействия:
Кроме того после удачного завершения accept:
Аргумент how задает действия, выполняемые при очистке системных буферов socket'а:
Содержательная часть программ примитивна:
Простая программа, использующая MDI интерфейс
Создание проекта программы
Class CMDIDoc : public CDocument
Class CMDIView : public CView
BOOL CMDIDoc::OnNewDocument()
Class neme : CMDIView Object ID : CMDIView Message : OnInitialUpdate
Void CMDIView::OnInitialUpdate()
Void CMDIView::OnDraw(CDC* pDC)
Void CMDIDoc::Serialize(CArchive UINT fuOptions;);
Пример проекта
Создание собственных ActiveX элементов
Void CMyClockCtrl::OnDraw(CDC*
Int CMyClockCtrl::OnCreate(LPCREATESTRUCT
Void CMyClockCtrl::OnTimer(UINT
Использование класса CTabCtrl
Сначала создадим проект tab_control
... TC_ITEM TabItem; TabItem.mask
#Include "Pageh" #include "Pageh" #include "Pageh"
... CPage pPage pPage= new
Void CTab_controlDlg::OnSelchangingTab(NMHDR*
Void CTab_controlDlg::OnDestroy()
-
Architecture Net
Новая технология .NET, предложенная компанией Microsoft, отражает видение этой компанией приложений в эпоху Internet. Технология .NET обладает улучшенной функциональной совместимостью, в основе которой лежит использование открытых стандартов Internet. Кроме того, она повышает устойчивость классического пользовательского интерфейса операционной системы Windows — рабочего стола. Разработчикам программного обеспечения технология .NET предоставляет новую программную платформу и великолепные инструментальные средства разработки, в которых основную роль играет язык XML (extensible Markup Language — расширяемый язык разметки).
Microsoft .NET — платформа, построенная на верхнем слое операционной системы. Технология .NET явилась главным объектом инвестиций компании Microsoft. С момента начала работ над этой технологией и до момента ее публичного анонсирования прошло три года. Несомненно, на развитие технологии .NET оказали влияние другие технологические достижения, в частности расширяемый язык разметки XML, платформа Java™, a также модель компонентных объектов Microsoft (Component Object Model — COM).
Стеклянный дом и тонкие клиенты
Устойчивая Windows
Новая платформа программирования
Каркас NET Framework
Общеязыковая среда выполнения CLR (Common Language Runtime)
Разработка приложений на разных языках
Инструментальные средства разработки
Важность инструментальных средств разработки
Роль языка XML
Факторы, определяющие успех Web-служб
Microsoft и Web
Резюме
Приложения в эпоху Internet
Web-службы
ASP.NET
Открытые стандарты и возможность взаимодействия (функциональная совместимость)
Протоколы обмена
Windows на рабочем столе
Проблемы с Windows
Architecture Net
Глава 2. Основы технологии .NET
ILDASM — дисассемблер промежуточного языка Microsoft
Возможность взаимодействия языков, или функциональная совместимость
Управляемый код
Сборки
JIТ-компиляция, или оперативная компиляция
Производительность
Резюме
Проблемы, связанные с разработкой Windows-приложений
Приложения будущего
Обзор платформы .NET
Волшебство метаданных
Библиотека классов .NET Framework
Программирование на основе интерфейсов
Объектом является все
Общая система типов
Architecture Net
Глава 3. Программирование на управляемом C++
Программа Hotel (Гостиница)
Типы данных C++ и общеязыковая среда выполнения CLR
Типы данных C++ и .NET Framework
Программирование на C++ для платформы .NET
Управляемые и неуправляемые типы
Управление сборкой мусора
Типовая безопасность
Типы значений
Абстрактные типы
Место C++ в мире .NET
Интерфейсы
Упаковка и распаковка примитивных типов данных
Делегаты
События
Свойства
Закрепление управляемых объектов
Конечные классы
Управляемое приведение типов
Определение ключевых слов в качестве идентификаторов
Обработка исключений
Использование расширений управляемого C++
Атрибуты C++
Резюме
Ваша первая программа на управляемом C++.NET
Программа HelloWorld (Привет, мир)
Директива #using и оператор using
Стандартный ввод-вывод
Класс System:: string (Система::Строка)
Класс System::Array (Система::МAССИВ)
Architecture Net
Объектно-ориентированное программирование на управляемом C++
Наследование в управляемом C++
Основные принципы наследования
Реализация примера "Бюро путешествий Acme"
Запуск программы примера
Класс HotelReservation
Класс HotelBroker
Класс Customers (Клиенты)
Пространство имен
Класс TestHotel
Резюме
Обзор основных понятий объектно-ориентированного программирования
Объекты
Классы
Полиморфизм
Проект: "Бюро путешествий Acme"
Проектирование абстракций
Логика базовых классов
Проектирование инкапсуляции
Architecture Net
Управляемый C++ в .NET Framework
Основные сведения об интерфейсах
Программирование с использованием интерфейсов
Динамическое использование интерфейсов
Программа Бюро путешествий Acme (Acme Travel Agency)
Явное определение интерфейсов
Родовые интерфейсы в .NET
Интерфейсы коллекций
Копирование объектов и интерфейс icioneable
Сравнение объектов
Что такое каркасы приложений
Объект системы: System::Object
Делегаты
Объявление делегата
Определение метода
Создание экземпляра делегата
Вызов делегата
Объединение экземпляров делегатов
Полный пример
Моделирование фондовой биржи
События
События в управляемом C++ и .NET
Общедоступные методы экземпляров класса Object (Объект)
Описание сервера
Описание клиента
Комната для дискуссий: пример чат-программы
Резюме
Защищенные методы экземпляров класса object (Объект)
Родовые интерфейсы и обычное поведение
Использование методов класса object (Объект) в классе Customer (Клиент)
Коллекции
Пример класса ArrayList (Список массивов)
Интерфейсы
Architecture Net
Краткое содержание
Создание графических пользовательских интерфейсов
Шаг 2М: Несколько обработчиков для события
Шаг 3: События MouseDown (Кнопка мыши нажата) и Keypress (Нажатие клавиши)
Меню
Шаг 4: Меню для выхода из программы
Код меню
Код события Menu (Меню)
Управляющие элементы
Шаг 5: Использование управляющего элемента TextBox (Поле)
Visual Studio.NET и формы
Демонстрация Windows Forms (Формы Windows)
Иерархия Windows Forms (Формы Windows)
Окно конструктора (Design window) и окно кода (Code window)
Добавление события
Код обработчика события
Использование управляющего элемента Menu (Меню)
Закрытие формы (Выход из формы)
Диалоговые окна
Документация по диалогам .NET
Демонстрация диалогового окна
Управляющий элемент ListBox (Список элементов)
Начальная загрузка списка элементов
Создание простых форм с помощью комплекса инструментальных средств разработки программ .NET SDK
Выбор элемента в списке элементов ListBox
Пример бюро путешествий Acme (Acme Travel Agency) — шаг 3
Резюме
Шаг 0: Создание простой формы
Шаг 1: Отображение текста на форме
Обработка событий в Windows Forms (Формы Windows)
Документация по обработке событий
Событие MouseDown (Кнопка мыши нажата)
Шаг 2: Обработка событий мыши
Architecture Net
Сборки и развертывание
Подписание в цифровой форме после компиляции
Конфигурация сборки
Проводимая по умолчанию политика управления версиями
Файлы конфигурации политики управления версиями
Обнаружение физического местоположения сборки
Многомодульные, или мультимодульные сборки
Инсталляция примера программной системы
Установка и развертывание проектов
CAB Project (Проект CAB)
Проект установки (Setup Project)
Сборки
Merge Module Project (Проект модуля слияния)
Развертывание по сети
Резюме
Содержимое сборки
Частное развертывание сборки
Общедоступное развертывание сборки
Строгие имена
Цифровые сигнатуры (подписи)
Цифровая подпись и развертывание общедоступной сборки
Управление версиями общедоступных компонентов
Architecture Net
Классы каркаса .NET Framework
Сериализация, или преобразование в последовательную форму
Объекты сериализации
ISerializable
Модель приложений .NET
Потоки
Изоляция потоков
Синхронизация коллекций
Контекст
Заместители и заглушки
ContextBoundObject
Метаданные и отражение
Изоляция приложений
Прикладная область
Прикладные области и сборки
Класс AppDomain (Прикладная область)
События AppDomain (Прикладная область)
Пример AppDomain (Прикладная область)
Маршализация, прикладные области и контексты
Асинхронное программирование
Асинхронные шаблоны проектирования
LAsyncResult
Класс туре (Тип)
Использование делегатов в асинхронном программировании
Организация поточной обработки с параметрами
Удаленный доступ
Краткий обзор удаленного доступа
Удаленные объекты
Активация
Пример удаленного объекта
Пример программы, реализующей удаленный доступ
Метаданные и удаленный доступ
Конфигурационные файлы удаленного доступа
Динамическое связывание
Программируемые атрибуты
Использование самостоятельно созданного атрибута
Определение класса атрибута
Определение базового класса
Сборка мусора
Уничтожение объектов
Неуправляемые ресурсы и освобождение ранее выделенной области памяти
Поколения
Завершение и раскручивание стека
Управление сборкой мусора с помощью класса сборщика мусора GC
Ввод и вывод в .NЕТ
Программа-пример
Резюме
Потоковые классы
Примитивные типы данных и потоки
TextReader И TextWriter
Обработка файлов
Architecture Net
Программирование в ADO.NET
Коллекция параметров
Классы SqlDataAdapter и DataSet (Набор данных)
Отсоединенный режим
Коллекции объектов DataSet (Набор данных)
Основные сведения о наборах данных
Обновление источника данных
Автоматически генерируемые свойства команд
Транзакции и обновление базы данных
Объект DataSet (Набор данных) и сравнение пессимистического блокирования с оптимистическим
Использование наборов данных
Источники данных
Множественные таблицы в объекте DataSet (Набор данных)
Создание таблицы без обращения к источнику данных
Ограничения и связи
Получение информации о схеме размещения данных в объекте DataTabie (Таблица данных)
Изменение объекта DataRow
Пример приложения Acme Travel Agency (Туристическое агентство Acme)
Доступ к данным XML
Схема и данные XML
XmlDataDocument
DataSet (Набор данных) и XML
Проводник Visual Studio.NET по серверу: Server Explorer
База данных AirlineBrokers
Создание документа XML из объекта DataSet (Набор данных)
Резюме
Установление соединения
Устройства считывания данных
a href="glava-09-rabota-s-bazoj-dannyh-v-soedinennom-rezhime.htm" >Работа с базой данных в соединенном режиме
Выполнение операторов SQL
DataReader
Множественное результирующее множество
Architecture Net
Краткое содержание
ASP.NET и Web-формы
Модель событий Web-форм
Обработка страницы
Трассировка
Программирование запросов и ответов
Класс HttpRequest
Класс HttpResponse
Изучение конкретного примера
Web-страница с информацией о гостиницах
Привязка данных
Приложения ASP.NET
Что такое ASP.NET?
Сеансы
Global.asax
Состояния в приложениях ASP.NET
Статические элементы данных
Объект Application (Приложение)
Объект Session (Сеанс)
Конфигурация ASP.NET
Файлы конфигурации
Дополнительная информация об ASP.NET
Резюме
Основные принципы создания Web-приложения
Программа на С#: Echo (Эхо)
Возможности ASP.NET
Архитектура Web-форм
Класс Page (Страница)
Время существования страниц с Web-формами
Состояние представления (вида)
Architecture Net
Web-службы
Просмотр Web-службы Add (Сложение) при помощи броузера
Отладка Web-службы Add (Сложение)
Клиент для Web-службы Add (Сложение)
Язык описания Web-служб (Web Services Description Language — WSDL)
Классы-заместители
Клиент web-службы, использующий
Особенности форматирования данных согласно спецификации SOAP
Класс WebService
Использование шаблона Managed C++ web Service (Web-службы на управляемом C++)
Код, генерируемый шаблоном Managed C++ Web Service (Web-служба на управляемом C++)
Протоколы
Арифметическая Служба Сети, или Web-служба Arithmetic (Арифметика)
Использование внутренних объектов
Web-служба Hotel Broker (Брокер гостиницы)
Web-служба Customer (Клиент)
Соображения по поводу проектирования
Резюме
Язык XML
Пространства имен XML (XML Namespeces)
Схема XML (XML schema)
Протокол SOAP
Язык описания Web-служб WSDL
Архитектура Web-службы
Пример Web-службы Add (Сложение)
Architecture Net
Web-узлы и Web-службы, работающие на основе ATL Server
Добавление в сервер еще одного обработчика
Добавление на сервер обработки управляющей структуры if-else-endif
Передача параметров серверному обработчику
Передача параметров серверному обработчику - 2
Поддержка состояния сеанса
Получение доступа к переменным сервера
Обработка форм
Службы сеанса
Создание проекта Web-службы на основе ATL Server (ATL Server Web Service Project)
Код Web-службы на основе ATL Server: ATLServerWebService.h
История технологий, работающих с динамическим содержимым Web
Создание клиентской программы, обращающейся к Web-службе
Добавление функций в Web-службу на основе ATL Server
Изменение клиентской программы, работающей с Web-службой
Передача структур в качестве входных и выходных параметров
Резюме
Приложения на основе ATL Server
ATL Server основан на интерфейсе прикладного программирования Internet-сервера (ISAPI)
Архитектура приложения, использующего ATL server
Создание проекта ATL Server Project (Проект на основе ATL Server)
Динамически подключаемая библиотека
Динамически подключаемая библиотека (DLL) Web-приложения
Создание и запуск проекта на основе ATL Server
Architecture Net
Защита
Роли .NET в Windows
Другие классы личностей
Личность в операционной системе и общеязыковой среде выполнения CLR
Разрешения коду на доступ
Простой запрос разрешения кодом
Как работает запрос на разрешение
Стратегия запроса разрешений
Запрет разрешений
Утверждение разрешений
Другие методы разрешений
Защита на основе пользователей
Класс SecurityPermission
Неуправляемый код
Разрешения на основе атрибутов
Разрешение принципала
Класс PermissionSet
Личность кода
Классы разрешений для личности
Подтверждение
Политика безопасности
Уровни политики безопасности
Защита доступа к коду
Кодовые группы
Именованные наборы разрешений
Изменение политики безопасности
Резюме
Разрешения
Lnternet-безопасность
Информационный сервер Internet: Internet Information Server (MS)
Защита .NET на основе ролей
Принципалы и личности
Architecture Net
Трассировка и отладка в .NET
Класс TraceListener
Коллекция слушателей
Резюме
Пример TraceDemo
Разворачивание TraceDemo.exe.config
Использование классов Debug (Отладка) и Trace (Трассировка)
Использование переключателей для активизации диагностики
Активация и деактивация переключателей
Установка переключателей в файле конфигурации
Установка переключателей программным путем
Использование переключателей для управления выводом
Architecture Net
Смешивание управляемого и неуправляемого кода
Сервисная программа Tibinp. ехе
Унаследованный компонент на основе модели компонентных объектов Microsoft (COM)
Действующий клиент на основе модели компонентных объектов Microsoft (COM)
Создание клиента на основе модели компонентных объектов Microsoft (COM) с помощью управляемого C++
Разработка управляемого клиента на основе модели компонентных объектов Microsoft (COM) с помощью С#
Создание с помощью управляемого
Создание с помощью С# управляемого
Доступ к управляемым компонентам из клиентов на основе модели компонентных объектов Microsoft (COM)
Раннее связывание клиента на основе модели компонентных объектов Microsoft (COM) с компонентами .NET
Динамическое связывание клиента
Сравнение управляемого и неуправляемого кода
Явное определение интерфейса
Службы обращения к платформе: Plnvoke (Platform Invocation Services)
Резюме
Причины смешивания управляемого и неуправляемого кодов
Неуправляемый или опасный?
Управляемые и неуправляемые ссылки и типы значений
Ограничения на использование управляемых типов в C++
Вызов управляемого кода из неуправляемого и обратный вызов
Сравнение программирования на
Доступ из управляемого кода к
Architecture Net
Visual Studio.NET
Запуск программы в отладчике
Конфигурирование проектов
Создание новой конфигурации
Установка параметров компоновки приложения в конфигурации
Отладка
Оперативная отладка
Обычная отладка, точки останова
Резюме
Обзор Visual Studio.NET
Панели инструментов
Создание консольного приложения
Создание проекта C++
Добавление файла на C++
Использование текстового редактора Visual Studio
Компиляция проекта
Запуск программы
-
Гонки на вымирание, девяносто пятые выживают
Требования, предъявляемые программистами к компилятору, совсем не те, что у пользователей. Лозунг "время трансляции имеет значение!" отвергается пользовательским сообществом как маразм, не требующий объяснения. В самом деле, какой процент своего времени тратит на перекомпиляцию рядовой линуксоид?
Введение
Два лагеря— пользователи и программисты
Вавилонская башня языка Си/Си++
Качество оптимизации или мегагерцы, спрессованные в стрелу времени
Врезка Линус и компиляторы
Врезка чем народ компилирует ядро
Врезка еще тесты
Врезка www
Заключение
-
С++ для начинающих
Абстрактные контейнерные типы, представленные в главе 6, также используются для объявления параметров функции. Например, можно определить putValues() как имеющую параметр типа vector вместо встроенного типа массива
Структура книги
Изменения в третьем издании
Будущее С++
Благодарности
Благодарности во втором издании
Список литературы
Начинаем
Решение задачи
Программа на языке C++
Порядок выполнения инструкций
Директивы препроцессора
Немного о комментариях
Первый взгляд на ввод/вывод
Файловый ввод/вывод
Краткий обзор С++
Встроенный тип данных “массив”
Динамическое выделение памяти и указатели
Объектный подход
Объектно-ориентированный подход
Использование шаблонов
Использование исключений
Использование пространства имен
Стандартный массив – это вектор
Типы данных С++
Литералы
Переменные
Что такое переменная
Имя переменной
Определение объекта
Указатели
Строковые типы
Встроенный строковый тип
Класс string
Спецификатор const
Ссылочный тип
Тип bool
Перечисления
Тип “массив”
Многомерные массивы
Взаимосвязь массивов и указателей
Класс vector
Класс complex
Директива typedef
Спецификатор volatile
Класс pair
Типы классов
Выражения
Что такое выражение?
Арифметические операции
Операции сравнения и логические операции
Операции присваивания
Операции инкремента и декремента
Операции с комплексными числами
Условное выражение
Оператор sizeof
Операторы new и delete
Оператор “запятая”
Побитовые операторы
Класс bitset
Приоритеты
Преобразования типов
Неявное преобразование типов
Арифметические преобразования типов
С++ для начинающих
Явное преобразование типов
Устаревшая форма явного преобразования
Пример: реализация класса Stack
Инструкции
Простые и составные инструкции
Инструкции объявления
Инструкция if
Инструкция switch
Инструкция цикла for
Инструкция while
Инструкция do while
Инструкция break
Инструкция continue
Инструкция goto
Пример связанного списка
Обобщенный список
Абстрактные контейнерные типы
Система текстового поиска
Вектор или список?
Как растет вектор?
Как определить последовательный контейнер?
Итераторы
Операции с последовательными контейнерами
Удаление
Присваивание и обмен
Обобщенные алгоритмы
Читаем текстовый файл
Выделяем слова в строке
Обрабатываем знаки препинания
Приводим слова к стандартной форме
Дополнительные операции со строками
Строим отображение позиций слов
Определение объекта map и заполнение его элементами
Поиск и извлечение элемента отображения
Навигация по элементам отображения
Словарь
Удаление элементов map
Построение набора стоп-слов
Определение объекта set и заполнение его элементами
Поиск элемента
Навигация по множеству
Окончательная программа
Контейнеры multimap и multiset
Стек
Очередь и очередь с приоритетами
Вернемся в классу iStack
Функции
Введение
Прототип функции
Тип возвращаемого функцией значения
Список параметров функции
Проверка типов формальных параметров
Передача аргументов
Параметры-ссылки
Параметры-ссылки и параметры-указатели
Параметры-массивы
Абстрактные контейнерные типы в качестве параметров
Значения параметров по умолчанию
Многоточие
Возврат значения
Передача данных через параметры и через глобальные объекты
Рекурсия
Встроенные функции
Директива связывания extern "C" *
Функция main(): разбор параметров командной строки
Класс для обработки параметров командной строки
Указатели на функции
С++ для начинающих
Тип указателя на функцию
Инициализация и присваивание
Вызов
Массивы указателей на функции
Параметры и тип возврата
Указатели на функции, объявленные как extern "C"
Область видимости и время жизни
Область видимости
Локальная область видимости
Глобальные объекты и функции
Объявления и определения
Сопоставление объявлений в разных файлах
Несколько слов о заголовочных файлах
Локальные объекты
Автоматические объекты
Регистровые автоматические объекты
Статические локальные объекты
Динамически размещаемые объекты
Динамическое создание и уничтожение единичных объектов
Шаблон auto_ptr *
Динамическое создание и уничтожение массивов
Динамическое создание и уничтожение константных объектов
Оператор размещения new *
Определения пространства имен *
Определения пространства имен
Оператор разрешения области видимости
Вложенные пространства имен
Определение члена пространства имен
Определение члена пространства имен - 2
ПОО и члены пространства имен
Безымянные пространства имен
Использование членов пространства имен *
Псевдонимы пространства имен
Using-объявления
Using-директивы
Стандартное пространство имен std
Перегруженные функции
Объявления перегруженных функций
Зачем нужно перегружать имя функции
Как перегрузить имя функции
Когда не надо перегружать имя функции
Перегрузка и область видимости *
Директива extern "C" и перегруженные функции *
Указатели на перегруженные функции *
Безопасное связывание *
Три шага разрешения перегрузки
Преобразования типов аргументов *
Подробнее о точном соответствии
Подробнее о расширении типов
Подробнее о стандартном преобразовании
Ссылки
Детали разрешения перегрузки функций
Функции-кандидаты
Устоявшие функции
Наилучшая из устоявших функция
Аргументы со значениями по умолчанию
Шаблоны функций
Определение шаблона функции
Конкретизация шаблона функции
Вывод аргументов шаблона *
Явное задание аргументов шаблона *
Модели компиляции шаблонов *
Модель компиляции с включением
Модель компиляции с разделением
Явные объявления конкретизации
Явная специализация шаблона *
Перегрузка шаблонов функций *
Разрешение перегрузки при конкретизации *
Разрешение имен в определениях шаблонов *
.Пространства имен и шаблоны функций *
.Пример шаблона функции
Обработка исключений
Возбуждение исключения
Try-блок
С++ для начинающих
Перехват исключений
Объекты-исключения
Раскрутка стека
Повторное возбуждение исключения
Перехват всех исключений
Спецификации исключений
Спецификации исключений и указатели на функции
Исключения и вопросы проектирования
Обобщенные алгоритмы
Краткий обзор
Использование обобщенных алгоритмов
Объекты-функции
Предопределенные объекты-функции
Арифметические объекты-функции
Сравнительные объекты-функции
Логические объекты-функции
Адаптеры функций для объектов-функций
Реализация объекта-функции
Еще раз об итераторах
Итераторы вставки
Обратные итераторы
Потоковые итераторы
Итератор istream_iterator
Итератор ostream_iterator
Пять категорий итераторов
Обобщенные алгоритмы
Алгоритмы поиска
Алгоритмы сортировки и упорядочения
Алгоритмы удаления и подстановки
Алгоритмы перестановки
Численные алгоритмы
Алгоритмы генерирования и модификации
Алгоритмы сравнения
Алгоритмы работы с множествами
Алгоритмы работы с хипом
.Когда нельзя использовать обобщенные алгоритмы
Операция list_merge()
Операция list::remove()
Операция list::remove_if()
Операция list::reverse()
Операция list::sort()
Операция list::splice()
Операция list::unique()
Классы
Определение класса
Данные-члены
Функции-члены
Доступ к членам
Друзья
Объявление и определение класса
Объекты классов
Функции-члены класса
Когда использовать встроенные функции-члены
Доступ к членам класса
Закрытые и открытые функции-члены
Специальные функции-члены
Функции-члены со спецификаторами const и volatile
Функции-члены со спецификаторами const и volatile - 2
Объявление mutable
Неявный указатель this
Когда использовать указатель this
Статические члены класса
Статические функции-члены
Указатель на член класса
Тип члена класса
Работа с указателями на члены класса
Указатели на статические члены класса
Объединение – класс, экономящий память
Битовое поле– член, экономящий память
Область видимости класса *
Разрешение имен в области видимости класса
.Вложенные классы *
.Разрешение имен в области видимости вложенного класса
.Классы как члены пространства имен *
.Локальные классы *
Инициализация, присваивание и уничтожение класса
Инициализация класса
Конструктор класса
Конструктор по умолчанию
Ограничение прав на создание объекта
Копирующий конструктор
Деструктор класса
Явный вызов деструктора
Опасность увеличения размера программы
Массивы и векторы объектов
Инициализация массива, распределенного из хипа *
Вектор объектов
Список инициализации членов
Почленная инициализация *
Инициализация члена, являющегося объектом класса
С++ для начинающих
Инициализация члена, являющегося объектом класса - 3
Почленное присваивание *
Соображения эффективности *
Перегруженные операторы и определенные пользователем преобразования
Перегрузка операторов
Члены и не члены класса
Имена перегруженных операторов
Разработка перегруженных операторов
Друзья
Оператор =
Оператор взятия индекса
Оператор вызова функции
Оператор “стрелка”
Операторы инкремента и декремента
Операторы new и delete
Операторы new[ ] и delete [ ]
Оператор размещения new() и оператор delete()
Определенные пользователем преобразования
Конвертеры
Конструктор как конвертер
.Выбор преобразования *
.Еще раз о разрешении перегрузки функций
.Функции-кандидаты
.Функции-кандидаты для вызова функции в области видимости класса
.Ранжирование последовательностей определенных пользователем преобразований
.Разрешение перегрузки и функции-члены *
.Объявления перегруженных функций-членов
.Функции-кандидаты
.Устоявшие функции
.Разрешение перегрузки и операторы *
.Операторные функции-кандидаты
.Устоявшие функции
.Неоднозначность
Шаблоны классов
Определение шаблона класса
Определения шаблонов классов Queue и QueueItem
Конкретизация шаблона класса
Аргументы шаблона для параметров-констант
Аргументы шаблона для параметров-констант - 2
Функции-члены шаблонов классов
Функции-члены шаблонов Queue и QueueItem
Объявления друзей в шаблонах классов
Объявления друзей в шаблонах Queue и QueueItem
Статические члены шаблонов класса
Вложенные типы шаблонов классов
Шаблоны-члены
Шаблоны классов и модель компиляции *
Модель компиляции с включением
Явные объявления конкретизации
Специализации шаблонов классов *
.Частичные специализации шаблонов классов *
.Частичные специализации шаблонов классов * - 2
.Разрешение имен в шаблонах классов *
.Пространства имен и шаблоны классов
.Шаблон класса Array
Наследование и подтипизация классов
Определение иерархии классов
Объектно-ориентированное проектирование
Идентификация членов иерархии
Определение базового класса
Определение производных классов
Резюме
Доступ к членам базового класса
Конструирование базового и производного классов
Конструктор базового класса
Конструктор производного класса
Альтернативная иерархия классов
Отложенное обнаружение ошибок
Деструкторы
С++ для начинающих
Деструкторы - 2
Виртуальные функции в базовом и производном классах
Виртуальный ввод/вывод
Чисто виртуальные функции
Статический вызов виртуальной функции
Виртуальные функции и аргументы по умолчанию
Виртуальные деструкторы
Виртуальная функция eval()
Почти виртуальный оператор new
Виртуальные функции, конструкторы и деструкторы
Почленная инициализация и присваивание *
Управляющий класс UserQuery
Определение класса UserQuery
Соберем все вместе
Множественное и виртуальное наследование
Готовим сцену
Множественное наследование
Открытое, закрытое и защищенное наследование
Наследование и композиция
Открытие отдельных членов
Защищенное наследование
Композиция объектов
Область видимости класса и наследование
Область видимости класса при множественном наследовании
Виртуальное наследование *
Объявление виртуального базового класса
Специальная семантика инициализации
Порядок вызова конструкторов и деструкторов
Видимость членов виртуального базового класса
Пример множественного виртуального наследования *
Порождение класса, контролирующего выход за границы массива
Порождение класса отсортированного массива
Класс массива с множественным наследованием
Применение наследования в C++
Идентификация типов во время выполнения
Оператор dynamic_cast
Оператор typeid
Класс type_info
Исключения и наследование
Исключения, определенные как иерархии классов
Возбуждение исключения типа класса
Обработка исключения типа класса
Объекты-исключения и виртуальные функции
Раскрутка стека и вызов деструкторов
Спецификации исключений
Конструкторы и функциональные try-блоки
Иерархия классов исключений в стандартной библиотеке C++
Разрешение перегрузки и наследование *
Функции-кандидаты
Устоявшие функции и последовательности пользовательских преобразований
Наилучшая из устоявших функций
Библиотека iostream
Оператор вывода
Ввод
Строковый ввод
Дополнительные операторы ввода/вывода
Перегрузка оператора вывода
Перегрузка оператора ввода
Файловый ввод/вывод
С++ для начинающих
Состояния потока
Строковые потоки
Состояние формата
.Сильно типизированная библиотека
Приложение Обобщенные алгоритмы в алфавитном порядке
Алгоритм accumulate()
Алгоритм adjacent_difference()
Алгоритм adjacent_find()
Алгоритм binary_search()
Алгоритм copy()
Алгоритм copy_backward()
Алгоритм count()
Алгоритм count_if()
Алгоритм equal()
Алгоритм equal_range()
Алгоритм fill()
Алгоритм fill_n()
Алгоритм find()
Алгоритм find_if()
Алгоритм find_end()
Алгоритм find_first_of()
Алгоритм for_each()
Алгоритм generate()
Алгоритм generate_n()
Алгоритм includes()
Алгоритм inner_product()
Алгоритм inplace_merge()
Алгоритм iter_swap()
Алгоритм lexicographical_compare()
Алгоритм lower_bound()
Алгоритм max()
Алгоритм max_element()
Алгоритм min()
Алгоритм min_element()
Алгоритм merge()
Алгоритм mismatch()
Алгоритм next_permutation()
Алгоритм nth_element()
Алгоритм partial_sort()
Алгоритм partial_sort_copy()
Алгоритм partial_sum()
Алгоритм partition()
Алгоритм prev_permutation()
Алгоритм random_shuffle()
Алгоритм remove()
Алгоритм remove_copy()
Алгоритм remove_if()
Алгоритм remove_copy_if()
Алгоритм replace()
Алгоритм replace_copy()
Алгоритм replace_if()
Алгоритм replace_copy_if()
Алгоритм reverse()
Алгоритм reverse_copy()
Алгоритм rotate()
Алгоритм rotate_copy()
Алгоритм search()
Алгоритм search_n()
Алгоритм set_difference()
Алгоритм set_intersection()
Алгоритм set_symmetric_difference()
Алгоритм set_union()
Алгоритм sort()
Алгоритм stable_partition()
Алгоритм stable_sort()
Алгоритм swap()
Алгоритм swap_ranges()
Алгоритм transform()
Алгоритм unique()
Алгоритм unique_copy()
Алгоритм upper_bound()
Алгоритмы для работы с хипом
Алгоритм make_heap()
Алгоритм pop_heap()
Алгоритм push_heap()
Алгоритм sort_heap()
Предметный указатель