C++托管扩展

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

缺点

优点

缺点



相关

  • 内环境内环境 (法语:milieu intérieur,英语:interior milieu)是来源于法语的词汇。最早被克洛德·贝尔纳提出用来描述保护生物多细胞组织、器官功能及生理稳定的细胞外液环境。贝尔纳
  • 岛屿国家列表岛屿国家列表所列之岛国,意指其领土完全座落于一个或多个岛屿之上。且岛屿上通常没有与他国接壤的边界。以下列出相关国家。以下列出相关但有争议的政治实体,但不包含私人国家
  • 阿尔布雷希特·彭克阿尔布雷希特·彭克(Albrecht Penck,1858年9月25日-1945年3月7日)德国地理学家、地质学家。生于莱比锡附近的Reudnitz(德语:Reudnitz (Leipzig)),曾任维也纳大学(1885年-1906年)和柏林
  • 韦伯-费希纳定理韦伯定理(Weber-Fechner law)分为韦伯及费希勒两种定理,韦伯定理又称“感觉阈限定律”(absolute threshold),用于差异阈限定义。1860年由德国心理学家的古斯塔夫·费希纳提出费希
  • 鼋汁狗肉鼋汁狗肉是中国江苏省沛县的著名小吃,做法即以鼋汤烹煮狗肉,小吃至今已拥有两千多年的历史。据《史记》记载,刘邦手下名将樊哙,少时以屠宰狗肉为生。刘邦与他交情很深,经常买狗肉
  • 尼马帕达尼马帕达(Nimapada),是印度奥里萨邦Puri县的一个城镇。总人口16914(2001年)。该地2001年总人口16914人,其中男性8730人,女性8184人;0—6岁人口1697人,其中男906人,女791人;识字率77.47%
  • KennyS肯尼·施卢普(英语:Kenny Schrub,1995年5月19日-),游戏化名kennyS,是一名法国职业电子竞技选手。施卢普的电子竞技生涯始于2011年,起初他是一名《反恐精英:起源》的职业选手, 2012转战《反恐精英:全球攻势》(《CS:GO》)。kennyS被认为是世界上最好的《CS:GO》AWP狙击手之一,其出色表现受到了电竞界的极大关注。他在2015年游戏大奖中被评为“年度电子竞技玩家”。2012年初,施卢普短暂加盟Team eXtensive!。后来施卢普加入VeryGames。在《起源》
  • HK CAWS霰弹枪黑克勒&科赫HK CAW(Heckler & Koch HK CAWS)是原型自动霰弹枪,设计原意是战斗霰弹枪,在1980年代由黑克勒&科赫与温彻斯特连发武器公司、Olin Corporation联合制造。该枪装弹数为10发,使用12号霰弹,采用无托设计。具半自动跟自动射击两种模式。该枪设计灵巧,两手皆可使用。CS/LS2型冲锋枪 •FN P90 •05式微声冲锋枪 •Fort-224 •IWI塔沃尔X95 SMG型(MTAR-21 9×19毫米型) •ENARM Pentagun •弗兰基mod .41
  • 安德烈亚斯·贝克尔安德烈亚斯·贝克尔(德语:Andreas Becker,1970年3月8日-),德国男子曲棍球运动员。他曾代表德国参加1992年和1996年夏季奥林匹克运动会曲棍球比赛,其中1992年奥运会获得一枚金牌。
  • 沈金伦沈金伦(1960年1月-),湖北省荆州市江陵县秦市乡人,中国人民武装警察部队森林指挥部司令员,少将警衔,研究生学历。1979年3月入伍。1980年4月加入中国共产党。1999年3月至2001年1月在国防大学基本系指挥员班学习。1987年至2008年间数次荣立三等功。2010年7月晋升武警少将警衔。历仼武警湖北总队武汉市支队战士、武汉市支队一中队司务长、武汉市支队七中队副指导员,湖北总队后勤部军需助理员、湖北总队军需处处长、后勤部副部长,武警森林指挥部后勤部副部长、部长,武警森林指挥部副主任、武警部队后勤部