.. role:: blue :class: blue Счётчик ссылок MbRefItem ================================= .. _MbRefItem_Reference_Counter: .. версия ядра: 118060 Класс :blue:`MbRefItem` объявлен в файле *reference_item.h*. Класс :blue:`MbRefItem` описывается количеством своих владельцев *useCount* и представляет собой счётчик объектов, владеющих данным объектом. Все геометрические объекты ядра C3D делятся на три группы: двумерные геометрические объекты, трёхмерные геометрические объекты и топологические объекты. Все геометрические объекты являются наследниками классов :blue:`MbRefItem` и :blue:`TapeBase`: .. figure:: /MODELER/GEOMETRICAL_OBJECTS/pictures/O.2.1.1.png :width: 12cm :align: center Класс :blue:`TapeBase` обеспечивает для своих наследников запись в поток и чтение из потока. Наследниками классов :blue:`MbRefItem` и :blue:`TapeBase` являются следующие объекты: :ref:`MbSpaceItem ` – базовый абстрактный класс трёхмерных геометрических объектов; :ref:`MbTopItem ` – базовый абстрактный класс топологических объектов; :ref:`MbPlaneItem ` – базовый абстрактный класс двумерных геометрических объектов; :ref:`MbFunction ` – базовый абстрактный класс скалярных функций. Счётчик ссылок обеспечивает корректную работу классов и методов, содержащих указатели на геометрические объекты. Если некоторый класс в своих данных содержит указатель на геометрический объект, то он обязан в конструкторе увеличить счётчик ссылок у геометрического объекта на единицу методом :blue:`AddRef`\(), а в деструкторе должен вызвать у геометрического объекта метод :blue:`Release`\(), который уменьшает счётчик ссылок геометрического объекта на единицу и, при достижении счётчиком ссылок нуля, удаляет геометрический объект. Метод :blue:`DecRef`\() уменьшает счётчик ссылок геометрического объекта на единицу. Класс :blue:`MbRefItem` обрабатывается регистратором дублирования :blue:`MbRegDuplicate` и регистратором преобразования :blue:`MbRegTransform`. Метод :blue:`RefType`\() возвращает регистрационный тип объекта, использующего счётчик ссылок.