C++托管扩展

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

缺点

优点

缺点



相关

  • 金华街金华街,是台湾台北市大安区的一条街道,介于罗斯福路与新生南路之间。金华街在日治时代为福住町(北侧)与锦町(南侧)之界线,沿街于日治时代为日本公务员之官舍,现仍留存部分日式建筑。
  • 嘉年华龙滕氏嘉年华龙(学名:Jianianhualong tengi)是嘉年华龙属(属名:Jianianhualong)现时唯一的一个物种。 本物种的化石于今日中国东北辽宁省白菜沟约1.25亿年前的早白垩纪热河生物群义
  • 18号染色体18号染色体是人类23对染色体中的一对,正常人拥有2条18号染色体。18号染色体缠绕了约8500万碱基对(构筑DNA的材料),并包含了人类细胞中约2.5%的DNA。辨识染色体上的基因是遗传学
  • 邪眼 (中东)邪眼尚有恶眼、恶魔之眼等多种称呼(土耳其语:Nazar Boncuğu),是在土耳其及邻近区域常见的一种防止嫉妒力量(即邪眼本意)的护身符。世界上许多国家与区域广泛有着“由嫉妒而生的邪
  • 都灵和议都灵和议签署于公元1381年8月8日,结束了威尼斯与热那亚间最后一场大战──基奥贾战争。在这场战争中,双方都承受了相当的损失,但热那亚的损失比威尼斯更为严重。最终,威尼斯在与
  • 李子雄 (高都郡公)李子雄(?-?),字毗卢,赵郡高邑县(今河北省石家庄市高邑县)人,出自赵郡李氏西祖,东魏陕州刺史李徽伯第五子,西魏、北周、隋朝官员。李子雄的祖父李榼是北魏太中大夫,父亲李徽伯是东魏陕州刺
  • 巴伐利亚的阿黛尔冈德 (1823-1914)巴伐利亚的阿黛尔冈德(德语:Adelgunde von Bayern,1823年3月19日-1914年10月28日),摩德纳公爵夫人(英语:List of Modenese consorts),巴伐利亚国王路德维希一世的女儿。1842年,阿黛尔冈
  • 酋长岩酋长岩(英语:El Capitan、西班牙语:El Capitán)是美国加利福尼亚州优胜美地国家公园内的一块巨大磐石,位于约塞米蒂谷以南。整块石头高900余米(3,000英尺),顶部海拔2307米(7,569英尺
  • 南部高速铁路南部高速铁路(荷兰语:Hogesnelheidslijn Zuid)是一条125公里长的高铁路线,由荷兰首都阿姆斯特丹直达比荷边界,另有一支线往布雷达。连同比利时的HSL 4路线形成了阿姆斯特丹至安特卫普高速通道。起初预计于2007年通车,但后来通车仪式在2009年9月6日才举行,对外开放日期延迟至翌日。由2009年12月13日起,大力士高速列车开行阿姆斯特丹至巴黎和布鲁塞尔服务,时速达300公里。其他列车则为160公里。
  • 让·赫肖尔特让·皮埃尔·卡尔·比龙(法语:Jean Pierre Carl Buron,1886年7月12日-1956年6月2日),一般称让·赫肖尔特(Jean Hersholt),男,法国和丹麦裔美国演员。曾获得塞西尔·B·德米尔奖。