与标准C ++相比,C ++ / CLI(以前称为“Managed C ++”)有哪些优势?

时间:2010-12-26 15:14:45

标签: c++ windows .net-3.5 c++-cli

我在SO中找到的最接近的问题是this one,但答案实际上是指C ++ / CLI优于 C#的优势。

我需要了解C ++ / CLI相对于标准C ++ 的优势。

5 个答案:

答案 0 :(得分:13)

C ++ / CLI和托管C ++(或 C ++托管扩展)是两回事。托管C ++是以前的版本,并且有一些语法差异。它也被弃用,转而使用C ++ / CLI。

C ++ / CLI是ISO C ++的扩展,因此比较没有实际意义。它允许编写将在CLR上运行的代码。因此,是否要使用该扩展取决于您是否需要在C ++中编写需要与CIL语言(例如C#)接口的东西。

例如,如果您需要在.NET应用程序中使用用C或C ++编写的旧库,则可以为其编写C ++ / CLI包装器。

答案 1 :(得分:11)

我还没有在答案中提到的一件事(可能是因为它更多的是一个缺点,但它是一个相关的考虑因素)是C ++ / CLI倾向于获得二等处理。 Microsoft 使用将其推送为C ++的替换。他们希望本地开发人员切换到.NET,这样做的方法是编写C ++ / CLI而不是C ++。

现在,他们已经放弃了这一点,C ++ / CLI被降级为互操作语言。 Microsoft建议您在需要混合本机C ++和.NET代码时使用它,您可以使用C ++ / CLI作为它们之间的“桥梁”,而C ++又是一流的语言。

C ++ / CLI在某些方面也落后了:

  • 在Visual Studio 2010中,Intellisense不再适用于C ++ / CLI。它会在某个时候重新启用,但就目前而言,它已经消失了。
  • VS2010增加了对C ++ 0x部分的支持,而据我所知,并非所有这些都适用于C ++ / CLI。同样,假设Microsoft保持两种语言同步,但在C ++语言中添加新功能之前可能会出现延迟,然后才能在C ++ / CLI中使用它们。

因此,如果您想编写.NET代码,请使用“真正的”.NET语言,例如C#。 如果要编写C ++,请使用“真正的”本机C ++。 如果您想混合这两者,请使用C ++ / CLI编写互操作代码。

答案 2 :(得分:3)

主要好处是可以访问.net框架和其他.net语言编写的其他代码。

答案 3 :(得分:3)

这是Bjarne Stroustrup's opinion of C++/CLI。我对此感到惊讶,因为上次我读它时,它更加消极。 (似乎微软现在已经同意他们在所有文档中都明确区分C ++ / CLI和ISO C ++。)

答案 4 :(得分:1)

  • 它使您可以访问.NET Base-Class-Library等中的各种功能,以及您已经在C ++中可以执行的操作。

  • 如果您如此倾向,您可以将大部分代码放在纯C#程序集中,并且只在必要时使用C ++。