C++托管扩展

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

缺点

优点

缺点



相关

  • 色彩学颜色或色彩(英语:Color)是眼、脑和我们的生活经验对光的颜色类别描述的视觉感知特征,其名称有红色、橙色、黄色、绿色、蓝色或紫色。这种对颜色的感知来自可见光谱中的电磁辐射
  • 艾草艾草(学名:),又称作艾叶、艾、艾蓬、甜艾、香艾、冰台、艾蒿、灸草,是一种多年生草本植物,分布于亚洲及欧洲地区。多年生草本,揉之有香气;叶子羽状分裂,背面有白丝绒毛;秋季开花,头状花
  • 接吻樂團接吻乐团(英语:KISS)是美国的摇滚/重金属乐团,1973年成立于纽约。以其特殊的脸部妆容、舞台服装、精心制作的现场表演闻名于世,包括口中喷火、砸吉他、吐血、吊钢丝飞天、空降、冒
  • 航空无线电技术委员会航空无线电技术委员会(Radio Technical Commission for Aeronautics,缩写RTCA)是美国一家为政府监管部门和行业制定技术指导的志愿者组织。该组织成立于1935年,1991年作为一家私
  • 香猪殃殃香猪殃殃(学名:)又名香车叶草,是茜草科猪殃殃属的植物,原产于欧洲、西亚及北非。植株具有香味,可以添加在食物及酒内以增加食品的风味。多年生草本植物,植株长三十至五十公分,常平卧
  • 长柄菊长柄菊(学名:),又名羽芒菊,为菊科羽芒菊属下的一种多年生草本植物,茎匍匐,具有粗毛,叶卵形或披针形,边缘有锯齿。缘或分裂。单花顶生,花冠白色,心花黄色。结瘦果。它原产于热带美洲,后来
  • 拉娃·布拉兹拉娃·布拉兹·维埃拉(葡萄牙语:Loalwa Braz Vieira,1953年6月3日-2017年1月19日),巴西歌手和词曲作家。她最著名的作品是在法国-巴西流行乐团Kaoma(英语:Kaoma)的全球畅销金曲《黏巴
  • IntelliPointIntelliPoint是微软鼠标的驱动,同时也是一款可以更改鼠标设定的应用程序。
  • Ore-IdaOre-Ida是亨氏公司的一个马铃薯类冷冻食品品牌。Ore-Ida马铃薯产品公司(Ore-Ida Potato Products, Inc.)由爱达荷州企业家F. Nephi Grigg和他的兄弟Golden Grigg以及Otis Will
  • 杰伊·奥布赖恩杰伊·奥布赖恩(英语:Jay O'Brien,1883年2月22日-1940年4月5日),美国男子雪车运动员。他曾代表美国参加1928年和1932年冬季奥林匹克运动会雪车比赛,获得一枚金牌和一枚银牌。