Share 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 estruturas aninhadas não podem ter um especificador class_access.

  • nome
    O nome da classe ou estrutura.

  • modificador (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 manipulador para o objeto é realmente passado ou armazenado.

    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.

6w96b5h7.collapse_all(pt-br,VS.110).gifRequisitos

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 para o objeto é realmente passada ou armazenada.

    As palavras-chave value class e value struct informam ao compilador que o valor da classe ou estrutura alocada é passado para funções ou armazenado nos membros.

6w96b5h7.collapse_all(pt-br,VS.110).gifRequisitos

Opção do compilador: /clr

Consulte também

Conceitos

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