Share via


__gc

注意

このトピックは、C++ マネージ拡張のバージョン 1 にのみ対応しています。この構文は、バージョン 1 のコードを保守するためだけに使用してください。新しい構文で同等の機能を使用する方法については、「クラスと構造体 (C++ コンポーネント拡張)」を参照してください。

__gc 型を宣言します。

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

解説

__gc 型は、C++ 言語の拡張機能で、相互運用性やガベージ コレクションなどの機能を使用できるようにすることで、.NET Framework プログラミングを簡略化します。

注意

抽象 __gc クラスのすべてのメンバー関数は、メンバー関数が純粋仮想でない限り、定義する必要があります。

C++ のマネージ拡張で、C# のクラスおよび構造体と同等になるものは、次のとおりです。

C++ マネージ拡張

C#

詳細情報

__gc struct または __gc class

class

class キーワード

__value struct または __value class

struct

struct キーワード

使用例

次の例では、マネージ クラス (X) が、マネージ ポインターを介して処理されるパブリック データ メンバーで宣言されています。

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

出力

0
4
5