私はIvorHortonのBeginningVisual C++ 2008を読んでいましたが、そのCLRの例の多くにはmainの次の定義があります。
_int main(array<System::String ^> ^args)
_
私は本の最初にページごとに戻って、それが実際に何を意味するのかを説明した最初のそのようなインスタンスを見つけましたが、見つけることができませんでした。
明らかに、それは標準のint main(int argc, char *argv[])
と同じ意味ですが、その_^
_が実際に使用されるのはいつ、なぜ、そしてなぜそれが存在するのかを知りたいのです(_*
_および参照_&
_は表すことができません)?
これはマネージポインターです。*はアンマネージされているオブジェクトへのポインターを示し、^はガベージコレクションされたオブジェクト(フレームワークによって処理される)を指します。 .NETでのポインタの処理方法の詳細については、 this を参照してください。
それに加えて、C++/CLIでは、マネージポインターは通常のポインターとは別に処理されるため、別のキーワードを割り当てて割り当てることもできます。
NativeObject* n = new NativeObject();
ManagedObject^ m = gcnew ManagedObject();
管理対象オブジェクトとネイティブオブジェクトはまったく異なるものであり、それらを混在させることはできません(まあ、簡単ではありません)。
詳細については、これを参照してください: http://msdn.Microsoft.com/de-de/library/yk97tc08.aspx :
管理ヒープ上のオブジェクトへのハンドルは、オブジェクトのメンバーではなく、「オブジェクト全体」を指します。