4

クラスの多重継承はC++で許可されていますが、.NETではこれが許可されていません。VisualC++ .NETでクラスの多重継承はどのように機能しますか?

編集:

わかりました、コメントに基づいて、この質問はやや不明確なようです。.NETは言語ではなくフレームワークであることを理解しています。また、.NETがCLR/CLSに準拠していることも理解しています。

私のポイントは、C ++でMIが許可されている場合、Visual C ++ .NETを使用してアプリケーションを作成する場合でも、MIを使用できますか、それとも.NETはCLR / CLS準拠を維持するためにこれを防止しますか?

VC++。NETでMIを使用できる場合...

  1. なぜVC++。NETでは可能ですがC#.NET / VB.NETでは不可能なのですか?
  2. これには、従来のC ++と比較して制限がありますか?
  3. これは、VC ++での.NETの使用にどのように影響しますか?
4

1 に答える 1

7

C ++ /CLIは完全なC++であり、CLIオブジェクトを簡単に定義および操作するためのいくつかの追加機能を備えています。これは、C ++ライブラリを使用して、C#または他のCLI言語(JNIのようなものですが、コンパイラに統合されているため、はるかに使いやすくなっています)で使用できるようにすることを目的としています。これを実現するには、クラスを定義する2つの方法があります。

  • だけclassでクラスを定義すると、オプションがない場合とまったく同じようにC++クラスが作成され/CLIます。多重継承を持つことができますが、バイトコードでコンパイルされたコード(C#、VB.NET、JavaScriptなど)では表示されません。
  • CLIクラスを定義してC#から使用する場合は、で宣言するよりも、多重継承を許可ref classしません。

これは、オブジェクトモデルに互換性がないために正確に行われるため、C++クラスを直接使用することはできません。

于 2012-08-13T11:05:41.880 に答える