Compartilhar via


__gc

 

Publicado: abril de 2016

Dica

Este tópico se aplica apenas a versão 1 de Managed Extensions for C++. Esta sintaxe só deve ser usada para manter o código da versão 1. Consulte Classes and Structs (C++ Component Extensions) para obter informações sobre como usar a funcionalidade equivalente na nova sintaxe.

Declara um tipo GC.

Sintaxe

__gc
array-specifier
__gc 
class-specifier
__gc 
struct-specifier
__gc
interface-specifier
__gc
pointer-specifier
__gc new

Comentários

Um tipo GC é uma extensão da linguagem C++ que simplifica a programação do .NET Framework, fornecendo recursos como interoperabilidade e coleta de lixo.

Dica

Cada função de membro de uma classe GC abstrata deve ser definida, a menos que a função de membro é essencialmente virtual.

Nas extensões gerenciadas para C++, os equivalentes a uma classe c# e uma estrutura c# são:

Extensões gerenciadas do C++

C#

Para obter mais informações

classe de struct ou GC GC

classe

classe palavra-chave

struct Value ou classe Value

struct

struct palavra-chave

Exemplo

No exemplo a seguir, uma classe gerenciada (X) é declarada com um membro de dados públicos, que é manipulado por meio de um ponteiro gerenciado:

// keyword__gc.cpp
// compile with: /clr:oldSyntax
#using <mscorlib.dll>
using namespace System;

__gc class X {
public:
   int i;
   int ReturnInt() { return 5; }
};

int main() {
   // X is a __gc class, so px is a __gc pointer
   X* px;
   px = new X;   // creates a managed object of type X
   Console::WriteLine(px->i);

   px->i = 4;   // modifies X::i through px
   Console::WriteLine(px->i);

   int n = px->ReturnInt();   // calls X::ReturnInt through px
   Console::WriteLine(n);
}

Saída

0
4
5