Непрозрачные типы (Opaque Types)

Непрозрачные типы описывают переменные, которые являются эффективным способом управления непрозрачностью других объектов. Доступ к этим объектам осуществляется через встроенные функции, а не через прямое чтение или запись объявленной переменной. Они могут быть объявлены только как функциональные параметры или в постоянных (*не путать с константными) переменных. Единственными непрозрачными типами, которые принимают спецификаторы памяти, являются типы изображений. За исключением индексирования массива, выбора элемента структуры и использования в круглых скобок, непрозрачные переменные не могут быть операндами в выражениях. Подобное их использование приводит к ошибкам времени компиляции.

Непрозрачные переменные нельзя рассматривать как l-значение (что это такое), следовательно они не могут использоваться в качестве входящих или входяще-исходящих значений функции. Любое подобное использование приведет к ошибке времени компиляции. Однако они могут быть переданы как входящий параметр с подходящим типом и спецификатором памяти. Они не могут быть объявлены при помощи инициализатора.

Одно объявление непрозрачного типа объявляет два объекта, сам непрозрачный дескриптор (handle) и объект на который он ссылается, на выходе в одном месте получаются классификатор хранилища и классификатор памяти. Классификатор хранилища будет определять дескриптор (handle) непрозрачности, а классификатор памяти будет определять объект, к которому он привязан.

Main Admin

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *