__gc
発行: 2016年4月
注意
このトピックは、C++ マネージ拡張のバージョン 1 にのみ対応しています。 この構文は、バージョン 1 のコードを保守するためだけに使用してください。 参照してください Classes and Structs (C++ Component Extensions) については、新しい構文で同等の機能を使用します。
__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 キーワード |
__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