Архив категории ‘Язык программирования C++’

Развитие «сознания» класса. Как использовать принадлежность объектов

    На этом шаге мы рассмотрим использование принадлежности об'ектов.     После задания статуса владения объектами для косвенного контейнера можно вызвать функции-члены для удаления одного или нескольких объектов из контейнера и, возможно, удаления при этом самих объектов. В листинге 1 демонстрируются несколько основных приемов.     Листинг 1. OWNER.CPP (демонстрация принадлежности объектов) #include <iostream.h> #include <cstring.h> #include […]

Развитие «сознания» класса. Как задать принадлежность объектов.

    На этом шаге мы рассмотрим способ задания принадлежности объектов.     Можно задать принадлежность объектов, создав косвенный контейнер, подобный TIArrayAsVector, и вызвав функцию, наследованную из класса TShouldDelete. Например, рассмотрим следующий косвенный контейнер, запоминающий указатели на строковые объекты: TIАгrayAsVector<string> stuff(100);     Для того чтобы определить, владеет ли stuff своими объектами (по умолчанию владеет), следует вызвать функцию […]

Развитие «сознания» класса. Принадлежность объектов.

    На этом шаге мы рассмотрим принадлежность объектов.     Запомнить объект в контейнере совсем не так легко. Вам необходимо знать, имеете ли вы дело с динамическими объектами, созданными с помощью оператора new, или же с объектами, которые существуют временно в стеке, а может быть с глобальными, размещающимися в сегменте данных. Вам также должно быть известно, […]

Развитие «сознания» класса. Итераторы.

    На этом шаге мы рассмотрим альтернативный метод доступа к объектам контейнера.     Итераторы предоставляют альтернативный метод доступа к объектам контейнера. Итераторами снабжаются абстрактные контейнеры вроде массивов и очередей, а также такие фундаментальные структуры, как списки и векторы.    С помощью итератора вы можете "передвигаться" по объектам в структуре без их удаления. Например, обычно только верхний […]

Косвенное и непосредственное запоминание объектов в контейнерах.

    На этом шаге мы рассмотрим способы запоминания объектов в контейнерах.     Теперь, когда вы разобрались с соглашениями именования классов и общей схемой библиотеки, можно приступить к собственно запоминанию данных в контейнерах. Независимо от типа контейнера, важно решить, запоминать ли объекты косвенно (по указателю) или непосредственно (копированием). Контейнеры, у которых в имени содержится буква I, […]

Соглашения именования шаблонов.

    На этом шаге мы рассмотрим соглашения именования шаблонов.     Бессчетное количество имен классов в библиотеке поначалу может показаться ошеломляющим, и поскольку одни классы выводятся из других, то часто приходится читать информацию о нескольких классах для того, чтобы разобраться, что делает дин из них. Например, в классе TStackAsVector определен только конструктор. В предке класса TMStackAsVector […]

Как создать контейнер.

    На этом шаге мы научимся создавать контейнер.     Покажем на простом примере, как создаются контейнерные классы. Сначала следует включить один или несколько заголовочных файлов, содержащихся в подкаталоге INCLUDE\CLASSLIB каталога BC45. Например, для того чтобы воспользоваться стековым контейнером, следует включить заголовочный файл STACKS.H: #include <classlib\stacks.h>     Затем создайте контейнерный объект одного из классов, содержащихся в […]

АТД и ФСД.

    На этом шаге мы рассмотрим абстрактные типы данных и фундаментальные структуры данных.    Контейнерный класс - это абстрактный тип данных (АТД). Он обеспечивает абстракцию методов хранения данных, например стек - АТД с такими функциями, как Push() и Рор(), для запоминания и восстановления данных методом стека. Внутренняя реализация этих функций не зависит от концепции стека. Вы […]

Введение в шаблоны контейнерных классов.

    На этом шаге мы введём понятие контейнерных классов .     В библиотеку шаблонов классов Borland входят контейнерные классы, которые можно включать в программы для управления коллекциями данных любых видов. Подобно обычным массивам и спискам, контейнерные классы - это хранилища данных, предназначенные для широкого использования. Кроме того, контейнерные классы объектно-ориентированы, и вы можете расширять их […]

Пример простой программы

    На этом шаге мы приведем пример простой программы, иллюстрирующей изложенный материал.     Приведем пример программы, выполняющей простые арифметические дейтсвия.     Листинг 1. Calcul.cpp //Программа выполняет различные арифметические действия, //написанные на ассемблере. #include <stdio.h> #include <iostream.h> int summa(int a, int b) {// return a+b; int s; asm { mov ax, a add ax, b mov […]