Классы и структуры (расширения компонентов C++)

Объявляет класс или структуру, чье время существования объекта администрируется автоматически.Когда объект больше недоступен или выходит за пределы области, Visual C++ автоматически удаляет выделенную объекту память.

Все среды выполнения

Синтаксис

class_access ref class    name modifier :  inherit_access base_type {};
class_access ref struct   name modifier :  inherit_access base_type {};
class_access value class  name modifier :  inherit_access base_type {};
class_access value struct name modifier :  inherit_access base_type {};

Параметры

  • class_access (необязательно)
    Доступность класса или структуры за пределами сборки.Возможные значения public и private (private по умолчанию).Вложенные классы или структуры не могут иметь описателя class_access.

  • name,
    Имя класса или структуры.

  • modifier (необязательно)
    abstract и sealed — допустимые модификаторы.

  • inherit_access (необязательно)
    Доступность base_type.Единственный возможный уровень доступа public (public по умолчанию).

  • base_type (необязательно)
    Базовый тип.Однако тип значения не может выступать в качестве базового типа.

    Дополнительные сведения см. в описании данного параметра в разделах Среда выполнения Windows и Среда CLR.

Заметки

По умолчанию уровень доступа члена объекта, объявленного с помощью ref class или value class, — private.По умолчанию уровень доступа члена объекта, объявленного с помощью ref struct или value struct, — public.

Если ссылочный тип наследуется от другого ссылочного типа, виртуальная функция в базовом классе должна быть явно переопределена (с помощью override (расширения компонентов C++)) или скрыта (с помощью new (новый слот в vtable) (расширения компонентов C++)).Функции производного класса также должны быть явно отмечены как virtual.

Для обнаружения во время компиляции, является ли тип ref class или ref struct, value class или value struct используйте __is_ref_class (type), __is_value_class (type,) или __is_simple_value_class (type).Дополнительные сведения см. в разделе Поддержка характеристик типов компилятором (расширения компонентов C++).

Дополнительные сведения по классам и структурам см. в разделах:

Среда выполнения Windows

Заметки

См. раздел Ссылочные классы и структуры и Структуры и классы значений.

Параметры

  • base_type (необязательно)
    Базовый тип.ref class или ref struct могут наследовать от произвольного числа интерфейсов и от не более одного ref типа.value class или value struct могут наследовать от произвольного числа интерфейсов.

    При объявлении объекта с помощью ключевых слов ref class и ref struct доступ к объекту осуществляется через дескриптор объекта, который является указателем счетчика ссылок на объект.Когда объявленная переменная выходит за пределы области, компилятор автоматически удаляет базовый объект.Когда объект используется в качестве параметра или хранится в переменной, фактически передается и хранится только дескриптор на данный объект.

    При объявлении объекта с помощью ключевых слов value class и value struct время существования объявленного объекта не контролируется.Этот объект похож на любой другой стандартный класс или структуру C++.

6w96b5h7.collapse_all(ru-ru,VS.110).gifТребования

Параметр компилятора: /ZW

Среда CLR

Заметки

В следующей таблице перечислены отличия от синтаксиса, используемого в разделе Все среды выполнения, характерные для C++/CLI.

Параметры

  • base_type (необязательно)
    Базовый тип.ref class или ref struct могут наследовать от произвольного числа управляемых интерфейсов и произвольного числа ссылочных типов.value class или value struct могут наследовать от произвольного числа управляемых интерфейсов.

    Ключевые слова ref class и ref struct указывают компилятору, что класс или структура должны быть размещены в куче.Когда объект используется в качестве параметра или хранится в переменной, фактически передается и хранится только ссылка на данный объект.

    Ключевые слова value class и value struct указывают компилятору, что значение выбранного класса или структуры передается функции или сохраняется в членах.

6w96b5h7.collapse_all(ru-ru,VS.110).gifТребования

Параметр компилятора: /clr

См. также

Основные понятия

Расширения компонентов для платформ среды выполнения