__gc

 

Publicada: abril de 2016

Nota

Este tema solo es aplicable a la versión 1 de Extensiones administradas para C++. Esta sintaxis solo se debe utilizar para mantener el código de la versión 1. Consulte Clases y structs (Extensiones de componentes de C++) para obtener información sobre el uso de la funcionalidad equivalente en la nueva sintaxis.

Declara un tipo __gc.

Sintaxis

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

Comentarios

Un tipo __gc es una extensión del lenguaje C++ que simplifica la programación en .NET Framework proporcionando características como interoperabilidad y recolección de elementos no utilizados.

Nota

Cada función miembro de una clase abstracta __gc debe definirse a menos que la función miembro sea virtual pura.

En Extensiones administradas de C++, los equivalentes de una clase de C# y un struct de C# son los siguientes:

Extensiones administradas de C++

C#

Para obtener más información

struct __gc o clase __gc

clase

Palabra clave class

struct __value o clase __value

struct

Palabra clave struct

Ejemplo

En el ejemplo siguiente, una clase administrada (X) se declara con un miembro de datos público, que se manipula a través de un puntero administrado:

// 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);
}

Resultado

0
4
5