C++托管扩展

✍ dations ◷ 2024-12-22 18:31:14 #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++ 与其它编程语言在类似观念上的差异。

缺点

优点

缺点



相关

  • 十三区巴黎十三区(法语:13e arrondissement de Paris)是法国首都巴黎市的20个区之一。该区处于巴黎左岸。十三区里有巴黎的三个华人区之一。
  • 男性乳房发育症男性乳房发育症(英语:gynecomastia),亦作男性乳腺增生或女性化乳房,是指男性胸部因为乳腺不正常发育造成的增大状况。这种疾病的英文名称Gynecomastia的两个词根gyne-(γυνή)
  • 福德爷长庆庙坐标:25°01′30″N 121°31′19″E / 25.025014°N 121.521852°E / 25.025014; 121.521852福德爷长庆庙,简称长庆庙,是位于台湾台北市中正区板溪里的土地祠,历史可追溯至清治
  • 乌云河乌云河,位于中华人民共和国黑龙江省北部,是黑龙江右岸的一条支流。乌云河上游称美丰河,发源于逊克县东部宝山乡青松村东南的乌云山东南麓,向南流经翠峰林场后成为逊克县和汤旺县
  • 尚典尚典(琉球语:尚 典/ショーティン  ?;日语:尚 典/しょう てん ;1864年9月2日(同治三年八月二日)-1920年9月20日)和名中城王子朝弘,是琉球国末代国王尚泰王的长子。他是琉球国最后一位
  • 黄鳌黄鳌(1902年-1950年11月19日),又名泽霖,字润泉,外号“黄四麻子”,四川省崇庆县元通场人,民国政治人物,曾任立法院立法委员。
  • 普通红尾鸲普通红尾鸲(英语:common redstart,也简称 redstart,学名:),是一种雀形目的小型鸟类,属红尾鸲(英语:redstart)属。和它的近亲很类似的是,它已开始被认为属于鸫科,但近年来才被重新划分到了鹟科之下。
  • 初孟轩短片初孟轩(1996年4月21日-),台湾男演员,出生于桃园市,毕业于台北市立大学天母校区运动健康科学系,2017年因演出短片《揍他一顿》而开始展露头角。2017年韩国艺人李栋旭来台拍摄广告时曾经担任该艺人的替身。因《天桥上的魔术师》而受到大众的瞩目。于2021年1月7日入伍,2021年4月19日退伍。Template:台北电影节非常新人
  • PanzerPanzer(/ˈpænzər/(德语发音:.mw-parser-output .IPA{font-family:"Charis SIL","Doulos SIL","Linux Libertine","Segoe UI","Lucida Sans Unicode","Code2000","Gentium","Gentium Alternative","TITUS Cyberbit Basic","Arial Unicode MS","IPAPANNEW","Chrysanthi Unicode","Ge
  • 双铰接客车双铰接客车是一种大容量型客车,有三节车厢,四列轴,比铰接客车多出一节车厢。由于此种车很长,通常只用于高旅客量的核心线路或者快速公交系统。法国制造商雷诺和赫利兹巴士(英语:Heuliez Bus)在1980年代晚期制造了“Mégabus”(正式名称为Heuliez GX237),并向法国各个公交部门推销,但只有波尔多订购了10辆。这些客车在该城2004年建造有轨电车后停止服役。匈牙利客车制造商伊凯洛斯也在1990年早期开发了双铰接客车Ikarus 293。此外,沈阳市公共汽车公司所属的沈阳市客车装配厂曾于1