C++托管扩展

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

缺点

优点

缺点



相关

  • 教学医院教学医院是指具有教学用途,提供在学的医学院及护理学院学生见习、实习和作研究的医院。这类医院通常都是由大学的医学院开设,或由政府指定大学的医学院驻守,因此也被概括性的称
  • 道氏理论道氏理论(Dow Theory)是一个关于美国股票市场创造财富方式的活动方式理论。理论起初来源于新闻记者、首位华尔街日报(Wall Street Journal)的记者和道琼斯公司(Dow Jones and Com
  • 渊田美津雄渊田 美津雄(1902年12月3日-1976年5月30日),日本海军大佐,曾经参加过偷袭珍珠港。出生于奈良县北葛城郡磐城村(现在的葛城市)。就读奈良县立亩傍中学校(现在的高等学校),大正13年(1924
  • 命令与征服 红色警戒2:尤里的复仇《尤里的复仇》是《命令与征服:红色警戒2》的正统资料片,讲及苏联在红色警戒2中战败后,尤里意欲使用自己发明的心灵控制科技来统治全世界和苏联和盟军亦敌亦友的关系。躲藏的尤
  • 2011年亚足联亚洲杯2011年第15屇亚足联亚洲杯于2011年1月7日至29日在卡塔尔举行。这是卡塔尔继1988年以来第二次主办在亚洲杯决赛圈。本届的赛事中,与历届亚洲杯最不同
  • 陈金茂陈金茂(1963年10月7日-),前台湾棒球选手,曾经效力于中华职棒味全龙及兴农牛,守备位置为捕手。现在于桃园市龙潭区开设“阿嬷ㄟ灶脚”的冷饮店。2 麦克 | 3 郭建霖 | 4 林易增 | 5 罗世幸 | 6 萧浚濠 | 7 孙昭立 | 8 黄煚隆 | 9 陈彦成 | 15 林琨玮 | 16 洪正钦(总冠军赛MVP) | 18 林光宏 | 21 贾西 | 22 陈金茂 | 23 黄平洋 | 24 黄清文 | 26 李安熙 | 27 史东 | 30 张见发 | 32 李仲弘 | 35 马斯 总教练 50
  • 基督教圣人列表 (R)本表首栏为英文圣人名称。由于天主教会、圣公会、东正教会等在中国及其他使用中文的地区传教时间和途径不同,故对同样的圣人名称有不同的传统译法。兹罗列其各自传统译名如下。有些译名中原为地名者被传统译法译成人名的一部分,并得到广泛使用,为尊重传统计,兹将此等及类似译名列于准确译名后的括号内。参考文献见基督教圣人列表。基督教圣人列表:A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W -
  • 蒂莫·布洛姆奎斯特蒂莫·布洛姆奎斯特(瑞典语:Timo Blomqvist,1961年1月23日-),芬兰男子冰球运动员。他曾代表芬兰国家队参加1988年和1992年冬季奥林匹克运动会冰球比赛,其中1988年冬季奥运会获得一枚银牌。
  • 头与头发《头与头发》(英语:)是美国情景喜剧《我为喜剧狂》第1季的第11集,由剧集主创人、执行制片人、女主演蒂娜·菲和助理执行制片人约翰·瑞吉(英语:John Riggi)编剧,盖尔·曼库索执导,2007年1月18日通过全国广播公司在美国首播。客串出演本集的演员包括卡特里娜·宝登、克雷格·卡斯塔尔多、皮特·赫尔曼、布赖恩·麦肯、约翰·麦肯罗、马里克·潘考利、凯斯·鲍威尔和朗尼·罗斯。在这一集中,全国广播公司电视节目《TGS与崔西·乔丹》的首席编剧丽兹·莱蒙(蒂娜·菲饰)和节目女演员简娜·玛隆妮(Jenna Mar
  • 小林庆祐小林庆祐(日语:小林 慶祐/こばやし けいすけ ,1992年11月2日-)是日本千叶县佐仓市出身的职业棒球选手,司职投手,效力于日本职棒阪神虎。73 水口荣二 | 74 藤本敦士 | 78 平田胜男 | 81 马场敏史 | 83 嶋田宗彦 | 88 安藤优也 | 90 久保田智之 | 96 筒井壮 | 今冈诚86 和田豊(监督) | 50 北川博敏 | 70 田中秀太 | 72 江草仁贵 | 75 山崎宪晴 | 76 工藤隆人 | 84 日高刚 | 85 福原忍 | 87 野村克则13 岩崎优 | 14