45

I was reading Ivor Horton's Beginning Visual C++ 2008 and many of its CLR examples have this definition for main:

int main(array<System::String ^> ^args)

I went back, page by page, to the beginning of the book to find the first such instance with an explanation what it really means, but couldn't find one.

明らかにそれは標準と同じ意味ですが、いつ、なぜそれが実際に使用されるのか、そしてなぜそれが存在するのint main(int argc, char *argv[])かを知りたいです(ポインターと参照が表現できないことをしますか)?^*&

4

3 に答える 3

45

これはマネージ ポインターです。* はアンマネージ オブジェクトへのポインターを示し、^ はガベージ コレクションされたオブジェクト (フレームワークによって処理される) を指します。.NET でポインターが処理される方法の詳細については、こちらをお読みください。

于 2009-02-01T10:56:29.397 に答える
20

それに加えて、C++/CLI では、マネージ ポインターは通常のポインターとは別に処理されるため、別のキーワードを使用してそれらを割り当てることもできます。

NativeObject* n = new NativeObject();
ManagedObject^ m = gcnew ManagedObject();

マネージド オブジェクトとネイティブ オブジェクトは 2 つの完全に異なるものであり、それらを混在させることはできません (簡単ではありません)。

于 2009-02-01T11:26:06.467 に答える
0

完全な議論については、これを参照してください: http://msdn.microsoft.com/de-de/library/yk97tc08.aspx :

マネージド ヒープ上のオブジェクトへのハンドルは、オブジェクトのメンバーではなく、"全体" オブジェクトを指します。

于 2009-02-01T10:56:07.480 に答える