C++托管扩展

✍ dations ◷ 2025-07-01 10:02: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++ 与其它编程语言在类似观念上的差异。

缺点

优点

缺点



相关

  • 月质学月质学是众多天文学中,一门研究月球的物质成分、结构和构造、形成和演化历史的学科,即月球地质学。历史上,只有阿波罗太空船曾登陆月球,它也是目前为止唯一曾派出太空车采集月球
  • 圣胡安省圣胡安省(San Juan)为南美国家阿根廷二十三省之一,位于阿根廷西部(如右图之18位置),该省首府为圣胡安(San Juan)。1自治市
  • 田歌田歌(1941年3月11日-),本名沈幸雄,台湾作家。数十部国、台语连续剧 〔说明〕以‘晨钟’或‘田歌’之名,共著有 25 本武侠小说: 注: 数十部国、台语电影【命运的锁链】(静江月广播)(
  • 扭曲几何数学与物理学中,特别是在微分几何与广义相对论中,扭曲几何(warped geometry)是度规张量可写成如下形式的黎曼流形或洛伦兹流形:注意到几何可以分解成几何与几何的卡氏积(Cartesian
  • 安东尼奥·帕奇诺蒂安东尼奥·帕奇诺蒂(意大利语:Antonio Pacinotti,1841年6月17日-1912年3月24日),意大利物理学家,比萨大学物理学教授。
  • 藤村鼓乃美藤村鼓乃美(1987年11月20日-)是日本的女性声优,福冈县出身。血型B型。AIR AGENCY所属。福冈音乐专门学校与AIR AGENCY声优养成所毕业。曾获得第2回全日本动画歌曲大赏福冈预选大
  • 彼特·饶思彼特·饶思(英语:Peter Mikami Rouse,1946年4月15日-)是美国政治顾问,曾担任美国总统奥巴马时期的美国总统顾问、临时白宫幕僚长,以及奥巴马担任参议院议员时期的幕僚长、参议院民
  • 马克斯·布里克马克斯·布里克(英语:Max Brick,1992年7月5日-),英国男子跳水运动员。他曾代表英格兰参加2010年英联邦运动会跳水比赛,搭档汤姆·戴利获得男子双人10米跳台金牌。
  • 毕得经毕得经(Horace Tracy Pitkin;1869年-1900年7月1日),美国公理会差会传教士,在1900年义和团事件期间在中国保定被杀。为了纪念他,母校耶鲁大学的学生建立了雅礼协会。毕得经于1869年出生在费城。他的母亲是耶鲁学院的创建人伊利胡·耶鲁的后裔。毕家住在康涅狄格州哈特福德县的曼彻斯特。1884年,毕得经就读于坐落在新罕布什尔州埃克塞特镇的名校菲利普斯埃克塞特学院,在中学时代已颇为虔诚,热心于校园福音工作,在校园基督教奋进运动中发挥了主导作用,使得当地的酒馆纷纷歇业改行。他在1888年
  • 松本竣介松本竣介(1912年4月19日-1948年6月8日),日本昭和时期名西洋画家。松本竣介在1912年(明治45年)出生于东京涉谷。结婚前的旧姓为“佐藤”、1936年(昭和11年)与松本祯子结婚后改姓松本。1948年(昭和23年)、因支気管炎病死。