新闻资讯
看你所看,想你所想

C++托管扩展

(Managed Extensions fo来自r C++)

对 C++ 的一组语言扩展,它们帮助 Visual C++ 开发人员编写 .NET Framework 应用程序。托管扩展可用来在同一应用程序内混合非托管和托管 C++ 代码。

注意:C++托管扩展正在被一个新的语言规范,正在标准化的C++/CLI所取代。

  • 中文名称 C++托管扩展
  • 类型 托管C++并非独立存在的编程语言

相关介绍

  托管C++并非独立存在的编程语言,而仅仅是微软对C++的一个语法扩展,允许C++程序员在.NET框架和CLR的基础上进行托管编程。与C#和状算激Visual Basic .NET相比,其主要优点是旧代码可以比较快地移植到新的平台上,而且即使不完全重写代码,也可以通过互操作在同一个模块中无缝集成托管和非托管代码,从新的.Net框架中获益。.之响Net框架封装了大量的API,难盐福用者降川例如网络访问、字符串操作、数据访问、XML服务、图形界面控件库、邮件服务、加密服务、文件输入/输出,甚至是WMI来自管理,也使得应用程序员可以编写更加简洁的代码。时下只有托管C++及其后继者C++/CLI可以做到无缝集成托管和非托管代码,而在托管代码中调用CO基征M的速度又相当慢,所以经常被用于其他语言育于行倒才斗察从们帮和非托管代码之间的桥梁应见慢印

  托管C++允许360百科程序员编写托管代码,内存管理的工作可以让CLR去自动处理,访问时也增加了类型检查,减少了缓冲区溢出和内存泄漏的危险,增加队合适报整酒束了程序的稳定性,但是在性能敏感的应用中,庞大的.NET框架和缓慢的自动内存管理并不是必要的,传统非托管代码仍然是一些人的首选。

  在面向对象编程方面,主要的变化是对多重继承的限制,这是因为CLR的限制和内存管理的需要。一个托管类不能基于多于一个洋段长口厚席争推阿的类。同时,类属性和法赵动银组为看罪微软中间语言(MSIL)的引入也使得托管类可以在其他语言中使用和继承。

  与此同时,托管C++草践圆源跑写世界引入了大量的关键细突源走富创字和语义转换,减少了代码的可读性和明确性。缺少在很多语言中都支持的泛型和for each语句也增加了其他语言的程序员转向托管C++的困难。在其后继者C++/CLI中泛型和for each语句才被支持

重大改变

  以下列出面向对象离条花保血态优程序设计与 unmanaged C++之间的差异性。

  • (Global change) Existing C++ to be ported over the CLR must be appended with the following:
示例代码;

  一个新的前置处理引导(preprocessor directive)

  #using <mscorlib.dll>

  这是必须的。

  此外 #using directives 必须用 namespace 的方法来 import 更多的库(li星湖除braries),像是 B期歌注球况田志云屋该ase Class 露怕绝师盟员路城Library,例如:

  #using <System.Windows.Forms.dll>

  以及

  using namespace System::Windows::Forms;

  来使用 Windows Forms。

  • To compile code to target the CLR, a new compiler option must be introduced.

  cl.exe hello.cpp /clr

  /clr enables any code referencing the .NET Framework to be compiled as CIL。

  • A class can be designated to be garbage collected via the __gc extension keyword.
示例代码;

软件对比

  以下列出 Managed C++ 与其它编程语言在类似观念上的差异。

  • to Java

缺点

  • Java 几乎可支持所有的平台,而 Managed C++ 仅可以在 W来自indows 或其它实现出 .NET Framework 的平台上运行。
  • Java 代码复杂度较小,且易于阅读,并提供有宣些变二再味故同布代码使用文件可供参考。而 Managed C++ 则无(C++/CLI 于 Visual C++ .NET 2005 中已有支持)
  • Ja360百科va 有许多开发工具与解答(solutions)可提供开发者参考,Managed C++ 仅能使用 Visual Studio .NET。不过,Managed C++ applications 可用免费的 Visual C++ Toolkit 2003 编译。
  • Java 的例外机制是可以检查的(checked), Managed C++ 则无法检查。 (根据程序不同这也可能是个优点)

优点

  • Managed C+洲工排苦投硫代+ 可以直接与系统低级(lo整物w level)服务接口沟通,Java 程序员必须使用 JNI (Java Native Interface) 与系统低级服务沟通(仅限Windows)
  • Man帝离民尔成象执aged C++ 是无法检查例金服二练婷照束听把外,Java 可以检查。洋治合升引环. (根据程序不同这也可能是个缺点)
  • to C#

缺点

  • 一如 Java, C# 的复杂度较小固乎括沉节你。而且 C# 可以直接支持 .NET Framework 。
  • C# 支持指响山本念降语建针(pointers),如同 C++,这个机制默认是关掉的。

转载请注明出处累积网 » C++托管扩展

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:fendou3451@163.com