C++托管扩展

✍ dations ◷ 2025-12-11 10:39:26 #C++托管扩展

C++托管扩展(Managed Extensions for C++)是对C++的一个属性和关键字的扩展,以便于在微软公司的.NET Framework进行编程。它也经常被称为托管C++。2002年由微软发布。

托管C++并非独立存在的编程语言,而仅仅是微软对C++的一个语法扩展,允许C++程序员在.NET框架和CLR的基础上进行托管编程。与C#和Visual Basic .NET相比,其主要优点是旧代码可以比较快地移植到新的平台上,而且即使不完全重写代码,也可以通过互操作在同一个模块中无缝集成托管和非托管代码,从新的.Net框架中获益。

.Net框架封装了大量的API,例如网络访问、字符串操作、数据访问、XML服务、图形界面控件库、邮件服务、加密服务、文件输入/输出,甚至是WMI管理,也使得应用程序员可以编写更加简洁的代码。目前只有托管C++及其后继者C++/CLI可以做到无缝集成托管和非托管代码,而在托管代码中调用COM的速度又相当慢,所以经常被用于其他语言和非托管代码之间的桥梁。

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

在面向对象编程方面,主要的变化是对多重继承的限制,这是因为CLR的限制和内存管理的需要。一个托管类不能多继承基类。同时,类属性和微软中间语言(MSIL)的引入也使得托管类可以在其他语言中使用和继承。

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

以下列出面向对象编程与 unmanaged C++ 之间的差异性。

//hello.cpp//new using directive#using <mscorlib.dll>//another using namespace directive.using namespace System;int main()  {  Console::WriteLine("Hello");  return 0;}

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

   #using <mscorlib.dll>

这是必须的。此外 #using directives 必须用 namespace 的方法来 import 更多的库(libraries),像是 Base Class Library,例如:

  #using <System.Windows.Forms.dll>

以及

  using namespace System::Windows::Forms;

来使用 Windows Forms。

   cl.exe hello.cpp /clr

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

//gc.cpp#using <mscorlib.dll>__gc class gc  {  int* i;  char* g;  float* j;};int main()  {  while(true)  {    gc* _gc = new gc();  }  return 0;}

比较 Managed C++

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

缺点

优点

缺点



相关

  • Bk5f9 7s22, 8, 18, 32, 27, 8, 2主条目:锫的同位素锫(台湾称鉳;英语:Berkelium)是一种放射性化学元素,符号为Bk,原子序为97,属于锕系元素和超铀元素。位于美国加州伯克利的劳伦斯伯克
  • 石黄雄黄,又称作石黄、黄金石、鸡冠石,是一种含硫和砷的矿石,质软、性脆,通常为粒状、紧密状块,或者粉末,条痕呈浅桔红色。主要成分是四硫化四砷(As4S4,占90%以上)。雄黄主要产于低温热液
  • 柚子胡椒柚子胡椒(日语:柚子胡椒 / ゆずこしょう、ゆずごしょう),是一种日本九州地方的调味料。一般制作的材料包括罗汉橙(日语称“柚子”)的皮、青辣椒和盐。名称中的“胡椒”指的是辣椒(C
  • 列车自动保护系统列车自动保护系统(英语:Automatic Train Protection,缩写:ATP)亦称列车超速防护系统、列车自动防护系统,为列车超过规定速度时即自动制动的系统。列车超速防护系统分为地面设备与
  • 大广高速坐标:32°04′32″N 114°56′12″E / 32.07552°N 114.9365387°E / 32.07552; 114.9365387大庆-广州高速公路,简称大广高速,中国国家高速公路网编号为G45,起点在大庆,途经松原、
  • 李球南延君(朝鲜语:남연군/南延君,1788年-1836年),名李球(朝鲜语:이구/李球),朝鲜王朝的王族,朝鲜仁祖第三子麟坪大君的六世孙,为朝鲜王朝末年的政治实权者兴宣大院君李昰应的生父、朝鲜高宗的
  • 世界第八大奇迹世界第八大奇迹(Eighth Wonder of the World)是指一些被认为可以与世界七大奇迹相提并论的事物。以下列出被称为“世界第八大奇迹”的事物:
  • 刘海若刘海若(1967年10月31日-),台湾籍前凤凰卫视女主播。2002年5月10日在英国旅游时遇上火车出轨意外而重伤昏迷。在英国接受抢救期间,刘海若一度瞳孔完全散大,丧失了自主呼吸,对外界刺
  • 知花梅莎知花梅莎(日语:知花メイサ,1992年3月5日-),日本AV女优,于东京都出生,任职于标志集团株式会社。2012年10月,知花梅莎于Alice Japan出道。2013年3月22日,她与藤嶋唯和吉泽明步出席了台湾一个成人网站的公开活动。
  • 阿布维尔阿布维尔(法语:Abbeville,法语:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alternative","TITUS Cyberbit Basic","Arial Unicode MS","IPAPANNEW","Chrysanthi Unicode","Gen