__gc
Dica
Este tópico se aplica somente à 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 e estruturas (gerenciadas) para obter informações sobre como usar a funcionalidade equivalente na nova sintaxe.
Declara um tipo __gc.
__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 seja virtual pura.
Nas extensões gerenciadas do C++, os equivalentes a uma classe C# e um struct C# são os seguintes:
Extensões gerenciadas do C++ |
C# |
Para obter mais informações |
---|---|---|
struct __gc ou classe __gc |
classe |
palavra-chave class |
struct __value ou classe __value |
struct |
palavra-chave struct |
Exemplo
No exemplo a seguir, uma classe gerenciada (X) é declarada com um membro de dados público, 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