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.
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 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.
Requisitos
Opção do compilador: /clr
Consulte também
Conceitos
Extensões de componente para plataformas de tempo de execução