Declaração de um tipo de classe gerenciada

A maneira de declarar um tipo de classe de referência foi alterado de gerenciado Extensions para C++ para Visual C++ 2008.

No gerenciado Extensions, um tipo de classe de referência é antecedido pelo __gc palavra-chave. Na sintaxe de novo, a __gc palavra-chave é substituída por uma das duas palavras-chave espaçadas: ref class ou ref struct. A escolha de struct ou class indica o público (por struct) ou particular (para class) nível de acesso padrão de seus membros declarados em uma seção sem rótulo inicial do corpo do tipo.

Da mesma forma, no gerenciado Extensions, um tipo de classe de valor exibirá o __value palavra-chave. Na sintaxe de novo, a __value palavra-chave é substituída por uma das duas palavras-chave espaçadas: value class ou value struct.

Um tipo de interface, gerenciado Extensions foi indicado com a palavra-chave __interface. Na sintaxe de novo, este será substituído por interface class.

Por exemplo, as seguintes declarações de classe no gerenciado Extensions:

public __gc class Block {};     // reference class
public __value class Vector {}; // value class
public __interface IFooBar {};  // interface class

Sob a nova sintaxe de maneira equivalente esses são declarados sistema autônomo segue:

public ref class Block {};         // reference class
public value class Vector {};      // value class
public interface class IFooBar {}; // interface class

Especificando a classe sistema autônomo abstrata

Em gerenciado Extensions você colocar a palavra-chave __abstract antes da class palavra-chave (antes ou após o __gc) para indicar que a classe está incompleta e que não é possível criar objetos da classe dentro do programa:

public __gc __abstract class Shape {};
public __gc __abstract class Shape2D: public Shape {};

Sob a nova sintaxe, você especifica o abstract contextual seguindo a classe e nome antes de corpo de classe, lista de derivação da classe base ou ponto-e-vírgula de palavra-chave.

public ref class Shape abstract {};
public ref class Shape2D abstract : public Shape{};

É claro, o significado semântico é inalterado.

Especificando a classe sistema autônomo lacrados

Em gerenciado Extensions você colocar a palavra-chave __sealed antes da class palavra-chave (ou antes ou depois __gc) para indicar que os objetos da classe não podem ser herdados de:

public __gc __sealed class String {};

Sob a nova sintaxe, você especifica o sealed contextual seguindo a classe e nome antes de corpo de classe, lista de derivação da classe base ou ponto-e-vírgula de palavra-chave.

Você pode derivar uma classe e lacrar-lo.Por exemplo, a String classe é implicitamente derivado Object. O benefício de fechamento de uma classe é que ele oferece suporte a estático resolução (ou seja, em time de compilar) de todas as chamadas de função virtual por meio do objeto da classe sealed referência.Isso ocorre porque o sealed especificador garante que o String alça de acompanhamento não é possível fazer referência a uma classe derivada, em seguida, que pode fornecer uma instância de substituição do método virtual que está sendo chamado. Eis um exemplo de uma classe selada nova sintaxe:

public ref class String sealed {};

Um também pode especificar uma classe sistema autônomo ambos abstrato e selado – esta é uma condição especial que indica uma classe estática.Isso é descrito na documentação do CLR sistema autônomo segue:

"Um tipo de que ambosabstract e sealeddeve ter apenas membros estático e serve sistema autônomo o que alguns idiomas chamar um espaço para nome.

Por exemplo, aqui está uma declaração de uma classe selada abstrata usando a sintaxe de gerenciado Extensions:

public __gc __sealed __abstract class State {
public:
   static State() {}
   static bool inParamList();

private:
   static bool ms_inParam;
};

e Eis essa declaração traduzida para a nova sintaxe:

public ref class State abstract sealed {
public:
   static State();
   static bool inParamList();

private:
   static bool ms_inParam;
};

Herança de CLR: Especificando a classe base

No modelo de objeto CLR, somente herança única pública é suportada.No entanto, o gerenciado Extensions mantidos a interpretação do padrão ISO-C++ de uma classe base sem uma palavra-chave de acesso que especificar uma derivação particular.Isso significava que tinha cada declaração de herança do CLR fornecer o public palavra-chave para substituir a interpretação do padrão.

// Managed Extensions: error: defaults to private derivation
__gc class Derived : Base {};

A nova definição de sintaxe, a ausência de uma palavra-chave de acesso indica uma derivação pública em uma definição de herança do CLR.Assim, a public palavra-chave de acesso agora é opcional. Enquanto isso não exige qualquer modificação de gerenciado Extensions para código de c++, lista essa alterar de integridade.

// New syntax: ok: defaults to public derivation
ref class Derived : Base{};

Consulte também

Conceitos

Tipos gerenciado

Referência

Classes and Estruturas (Gerenciado)

abstrato (Visual C++)

autenticada