__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