Compartilhar via


Classes e Estruturas (Extensões de Componentes C++)

Declara uma classe ou estrutura cujo tempo de vida do objeto é automaticamente administrado. Quando o objeto não estiver mais acessível ou sair do escopo, o Visual C++ descarta automaticamente a memória alocada ao objeto.

Todos os Tempos de Execução

Sintaxe

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 {};

Parâmetros

  • class_access (opcional)
    A acessibilidade da classe ou estrutura fora do assembly. Os valores possíveis são public e private (private é o padrão). As classes ou as estruturas aninhadas não podem ter um especificador de class_access .

  • name
    O nome da classe ou estrutura.

  • modifier (opcional)
    abstract e sealed são modificadores válidos.

  • inherit_access (opcional)
    A acessibilidade de base_type. A única acessibilidade é permitida é public (public é o padrão).

  • base_type (opcional)
    Um tipo base. No entanto, um tipo de valor não pode atuar como um tipo base.

    Para obter mais informações, consulte as descrições específicas de linguagem deste parâmetro nas seções Tempo de Execução do Windows e Common Language Runtime.

Comentários

A acessibilidade do membro padrão de um objeto declarado com ref class ou com value class é private. E a acessibilidade do membro padrão de um objeto declarado com ref struct ou com value class é public.

Quando um tipo de referência herda de outro tipo de referência, as funções virtuais na classe base devem ser explicitamente substituídas ( substituir (Extensões de Componentes C++)) ou ocultas (com novo (novo slot em vtable) (Extensões de Componentes C++)). As funções de classe derivada também devem ser explicitamente marcadas como virtual.

Para detectar em tempo de compilação se um tipo é ref class ou ref struct ou value class ou value struct, use __is_ref_class (type), __is_value_class (type) ou __is_simple_value_class (type). Para obter mais informações, consulte Suporte para Compilador de Traços de Tipo (Extensões de Componentes C++).

Para obter mais informações sobre classes e estruturas, consulte

Tempo de Execução do Windows

Comentários

Consulte Classes e estruturas de referência e Classes e estruturas de valor.

Parâmetros

  • base_type (opcional)
    Um tipo base. ref class ou ref struct pode herdar de zero ou mais interfaces e de zero ou um tipo ref. Uma value class ou um value struct só pode herdar de zero ou mais interfaces.

    Quando você declara um objeto usando as palavras-chave ref class ou ref struct, o objeto é acessado por um manipulador para um objeto; isto é, um ponteiro de contador de referência para o objeto. Quando a variável declarada sai do escopo, o compilador exclui automaticamente o objeto subjacente. Quando o objeto é usado como um parâmetro em uma chamada ou armazenado em uma variável, um identificador para o objeto de fato é passada ou armazenada.

    Quando você declara um objeto usando as palavras-chave value class ou value struct, o tempo de vida do objeto declarado não é supervisionado. O objeto é como qualquer outra classe ou estrutura C++ padrão.

Requisitos

Opção do compilador: /ZW

Common Language Runtime

Comentários

A tabela a seguir lista diferenças da sintaxe mostrada na seção Todos os tempos de execução que são específicas para C++/CLI.

Parâmetros

  • base_type (opcional)
    Um tipo base. ref class ou ref struct pode herdar de zero ou mais interfaces gerenciadas e zero ou um tipo de referência. Uma value class ou um value struct só pode herdar de zero ou mais interfaces gerenciadas.

    As palavras-chave ref class e ref struct dizem ao compilador que a classe ou estrutura deve ser alocada na pilha. Quando o objeto é usado como um parâmetro em uma chamada ou armazenado em uma variável, uma referência ao objeto de fato é passada ou armazenada.

    As palavras-chave de value class e de value struct indicam ao compilador que o valor da classe ou da estrutura alocada será passado às funções ou armazenado nos membros.

Requisitos

Opção do compilador: /clr

Consulte também

Conceitos

Extensões de componente para plataformas de tempo de execução