web-dev-qa-db-ja.com

マネージドC ++とC ++の違い

トピックのタイトルは実際には私の質問です。 2番目の質問は次のとおりです。これら2つのうち何を使用するのか。

49
nutario

指定しない場合、C++はアンマネージC++であり、マシンコードにコンパイルされます。アンマネージC++では、メモリ割り当てを手動で管理する必要があります。

Managed C++は、Microsoftが開発した言語で、.NET Frameworkによって実行されるバイトコードにコンパイルされます。 C++とほぼ同じ構文を使用しているため(名前の由来)、C#またはVB.NETと同じ方法でコンパイルされます。基本的には構文の変更のみ、例えば'->'を使用して(C#の '。'の代わりに)オブジェクトのメンバーを指すようにする、名前空間に '::'を使用するなど.

Managed C++は、従来のC++から.NET Frameworkへの移行を容易にするために作成されました。新しいプロジェクトを開始するために使用するためのものではありません(C#を推奨)。

57
Laurent

「マネージC++」とは、Visual Studio.NET/VisualStudio.NET 2003に含まれていた言語を指します。それ以降は 非推奨 であり、最新の.net C++はC++/CLIです。

12
TraumaPony

ネイティブC++は2つの異なる方法でコーディングできます。 1つ目は、ユーザーとプラットフォーム(ハードウェア)の間のオペレーティングシステムのみを使用して、マシンコードに直接コンパイルすることです。 2番目のネイティブコーディングは、MFC(Microsoft Foundation Classes)で行われます。これは、MFCの使用を除いて、最初の例と同じです。

Managed C++はCLR(共通言語ランタイム)を使用します。CLRと.netフレームワーククラスライブラリは、.NET Frameworkを構成します。このマネージC++/CLI標準は、MSIL(Microsoft Intermediate Language)とともに.Netフレームワークを使用します。この標準は、プログラムがジャストインタイムコンパイラを使用して実行されている場合にのみ、マシンコードにマッピングすることで機能します。コードが異なるハードウェアプラットフォームで実行される場合、マネージコードの使用ははるかに簡単になります。すべてのものと同様に、ネイティブコードはより高速に実行されるため、利便性のためにわずかな代償を払う必要があります。

3
Wade Nelson

この質問 を見るべきだと思います。

2
GSerg

Managed C++は、メモリの割り当て、管理、ガベージコレクションが仮想マシンによって処理されることを意味します。一方、「通常の」C++では、メモリの割り当てと割り当て解除を行う必要があります。

0
hayalci

マネージコードからネイティブC++クラスライブラリを使用する場合は、マネージC++を使用します。この場合、アンマネージクラスをマネージC++クラスでラップしてから、任意のCLR言語で使用します。

0
radu_c