4

C++ 中允许类的多重继承,但是 .NET 不允许这样做,那么类的多重继承如何在 Visual C++ .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. 这对 .NET 在 VC++ 中的使用有何影响?
4

1 回答 1

7

C++/CLI 是一个完整的 C++,具有一些用于轻松定义和操作 CLI 对象的额外功能。其目的是允许使用 C++ 库并使其可用于 C# 或其他 CLI 语言(有点像 JNI,但集成在编译器中以使其更易于使用)。为此,它有两种定义类的方法:

  • 如果你用 just 定义一个类class,它会像没有这个/CLI选项一样创建一个 C++ 类。它可以具有多重继承,但对字节码编译的代码(C#、VB.NET、JavaScript 等)不可见。
  • 如果你想定义一个 CLI 类并从 C# 中使用它,那么你声明它ref class并且不允许多重继承。

这样做正是因为对象模型不兼容,因此不能直接使用 C++ 类。

于 2012-08-13T11:05:41.880 回答