C++托管扩展

✍ dations ◷ 2025-12-04 05:27:03 #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++ 与其它编程语言在类似观念上的差异。

缺点

优点

缺点



相关

  • 词义消歧计算机语言学中,词义消歧是一个 自然语言处理和本体论的开放问题。歧义与消歧是自然语言理解中最核心的问题,在词义、句义、篇章含义层次都会出现语言根据上下文语义不同的现
  • 厄尔·威尔伯·萨瑟兰小厄尔·威尔伯·萨瑟兰(英语:Earl Wilbur Sutherland Jr.,1915年11月19日-1974年3月9日),美国生理学家,出生于堪萨斯州,于1971年因为关于荷尔蒙,尤其是肾上腺素作用机制的研究,而获得
  • 林鹏林鹏(1986年10月25日-),辽宁大连人,中国女演员,毕业于中央戏剧学院2005级表演系。因出演2010年电影《大兵小将》而知名,被媒体冠以“龙女郎”的称号。与陈晓、毛晓彤、张佳宁、张倬
  • 韦莱河韦莱河(Uele River)是非洲中部刚果民主共和国的河流,是乌班吉河的支流,流入刚果河。韦莱河是全球第46长的河流,也是非洲第5长的河流。
  • 现代极大期现代极大期指的是自1914年第15周期开始,非常活跃的太阳活动。它在1950年代晚期的第19周期达到最高潮,并且可能结束于2000年的第23周期,因为仍在进行中的第24周期,迄今的活动纪录
  • 任化邦任柱(?-1867年),字化邦,安徽蒙城人,太平天国与东捻军将领,赖文光封任为鲁王。1864年天京失陷后,赖文光把本部太平军北上与捻军合并;日后捻军一分为二,与赖文光成为东捻军首领。1867年11
  • 韩春雨韩春雨(1974年1月11日-),河北科技大学生物科学与工程学院生命科学系副教授、硕士研究生导师。因其带领的团队在《自然-生物技术》杂志上发表了一篇关于发明了一种新的基因编辑技
  • 巴斯达韵小特雷弗·塔希姆·史密斯(英语:Trevor Tahiem Smith, Jr.,1972年5月20日-),艺名巴斯达韵(Busta Rhymes,也译作布斯塔·莱姆斯),是美国说唱歌手、歌曲创作者和演员。全民公敌乐队(Publi
  • 北京站 (地铁)北京站地铁站是一个位于中国北京市东城区建国门街道北京站西街、北京站东街、北京站街交叉口北京站北侧,属于北京地铁2号线的地铁车站,1971年1月15日随北京地铁一期工程投入试
  • 2012年欧洲国家杯外围赛H组2012年欧洲国家杯外围赛H组排名、赛程及赛果。首名可直接晋级2012年欧洲国家杯决赛周。2010年3月8日分组赛各参赛队伍齐集丹麦哥本哈根编排赛程。会议没有定论,最终赛程于3月25日在以色列特拉维夫举行第34届欧洲足协会员大会采用随机抽签决定。冰岛 v 挪威葡萄牙 v 塞浦路斯丹麦 v 冰岛挪威 v 葡萄牙塞浦路斯 v 挪威葡萄牙 v 丹麦丹麦 v 塞浦路斯冰岛 v 葡萄牙塞浦路斯 v 冰岛挪威 v 丹麦冰岛 v 丹麦葡萄牙 v 挪威挪威 v 冰岛塞浦