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


На этом шаге мы рассмотрим способ задания принадлежности объектов. Можно задать принадлежность объектов, создав косвенный контейнер, подобный 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 […]