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

And*_*Eve 7 c++ windows c++-cli .net-3.5

我在SO中找到的最接近的问题就是这个,但答案实际上是指C++/CLI优于C#的优点.

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

Eti*_*tel 13

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

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

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


jal*_*alf 11

我还没有在答案中提到的一件事(可能是因为它更多的是一个缺点,但它是一个相关的考虑因素)是C++/CLI倾向于获得二等处理.微软过去常常将其推广为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编写互操作代码.