C++托管扩展

✍ dations ◷ 2025-11-18 17:34:09 #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++ 与其它编程语言在类似观念上的差异。

缺点

优点

缺点



相关

  • 多细胞多细胞生物是指由多个、分化的细胞组成的生物体,其分化的细胞各有不同的、专门的功能。大多数可以使用肉眼看到的生物是多细胞生物。 所有多细胞生物都属于真核生物。多细胞
  • 上肢手臂指人的上肢,肩膀以下、手腕以上的部位。上肢(前肢)是一个人体部位,常指人的手臂(包括手掌)。在人体解剖学上,上肢是由以下几个部位组成的:以及由臂神经丛所联系的肌肉与组织。
  • 充分条件充分必要条件(英语:sufficient and necessary condition)简称为充要条件。在逻辑学中:因此:P是Q的必要条件,代表“如果P是假,则Q是假”。以逻辑符号表示:通过否定后件,得出“如果Q是
  • 克里米亚半岛克里米亚半岛(又译克里木半岛;俄语:Кры́мский полуо́стров,罗马化:Krymskiy poluostrov;乌克兰语:Кримський півострів,转写:Krymskyi nivost
  • 氯化钬氯化钬是一种无机化合物,化学式为HoCl3。它有着和氧化钬一样的变色性质,在自然光下为黄色,在日光灯下为亮粉色。氯化钬可以通过元素化合得到,但更常用的方法是氧化钬和氯化铵在2
  • 大翼橙大翼橙是柑橘属 Citrus下的一个野生种,分布于南亚、东亚与太平洋诸岛,又可再分为许多地理亚种。大翼橙目前经研究,是柑橘、柳橙、柚子、柠檬等等这类植物最原始的品种,即目前农
  • 曹卫洲曹卫洲(1954年7月-),男,河南清丰人,中华人民共和国政治人物。1969年12月参加工作,1976年7月加入中国共产党。1969年至1973年,历任中国人民解放军四九〇二部队战士、政治部电影放映员。1973年至1974年,任北京石油化工总厂宣传处工人。1974年至1978年,在北京对外贸易学院二系日语专业学习。1978年至1980年,任燕山石化总公司研究院情报室干部。1980年至2001年,历任共青团中央国际联络部干部、副处长、处长、副部长、部长,共青团中央第十三、十四届常委;中华全国青年联合会国际部
  • 陈嘉陈嘉(1907年-1986年),男,浙江杭州人,中国英语语言文学家,曾任南京大学教授、博士生导师,第五、六届全国政协委员。
  • 弗里萨赫弗里萨赫是奥地利的城镇,位于该国南部,距离首府克拉根福约40公里,由克恩顿州负责管辖,面积120.83平方公里,海拔高度634米,2012年人口5,176,其中九成居民信奉罗马天主教。
  • 五子登科五子登科本为中国民间谚语,最初来源于民间故事,话说五代后周时期,燕山府有个叫窦禹钧的人,他的五个儿子都品学兼优,先后登科及第,故称“五子登科”。窦禹钧本人也享受八十二岁高寿,无疾而终。当朝太师冯道为他赋诗云:“燕山窦十郎,教子有义方;灵椿一株老,丹桂五技芳。”《三字经》有:“窦燕山,有义方,教五子,名俱扬”的句子来歌颂他,教导儿童要好好念书,父亲也要教子有方。“五子登科”后来成为吉祥图案,寄托了一般人家期望子弟都能像窦禹钧五子一样获得科考成功。中国国民党接收大员到收复地区接收,发生严重腐化,大肆贪污本应上