C++托管扩展

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

缺点

优点

缺点



相关

  • 基底核基底核(拉丁语:Basal ganglia,或称为基底神经节)是大脑深部一系列神经核团组成的功能整体。它位于大脑皮质底下一群运动神经核的统称,与大脑皮层,丘脑和脑干相连。目前所知其主要
  • 鲁道夫·卡尔曼鲁道夫·埃米尔·卡尔曼(匈牙利语:Kálmán Rudolf Emil,1930年5月19日-2016年7月2日),匈牙利裔美国数学家,发明了卡尔曼滤波。1930年出生于匈牙利首都布达佩斯。1953年于麻省理工
  • 前东部领土德国前东部领土(德语:ehemalige deutsche Ostgebiete)或德意志帝国东部领土(德语:Ostgebiete des Deutschen Reiches)是指位于奥得河-尼斯河线以东,曾经得到国际公认属于德国领土一
  • 蒂芬妮环球小姐蒂芬妮环球小姐(英语:Miss Tiffany's Universe), 也称为“泰国变性人选美大赛”。 由蒂芬妮秀芭堤雅公司于5月中旬举办的选美比赛。冠军将可代表泰国参加国际皇后小姐。
  • 2011年日本东北地方太平洋近海地震前震和余震2011年日本东北地方太平洋近海地震前震和余震列出日本2011年太平洋近海地震发生前,日本气象厅地震规模7.0以上的前震,余震是显示日本气象厅烈度阶级5弱以上或者日本气象厅地震
  • 杰克·安佐卡杰克·托马斯·安佐卡 (英语:Jack Thomas Andraka,1997年1月8日-)或译作杰克·安卓卡,是位美国 发明家, 科学家 和癌症研究者.他是 2012年 英特尔科学竞赛 大奖获得者. 安佐卡因其
  • 卡尔莫山坐标:44°36′54″N 9°11′56″E / 44.615073°N 9.198803°E / 44.615073; 9.198803卡尔莫山(意大利语:Monte Carmo),是意大利的山峰,位于该国北部,由伦巴第大区负责管辖,属于利古
  • 𨚲䣕县 (西汉)�䣕县,西汉时以夜郎所置县。在今云南省宣威市境:21。建元六年(前135年),西汉政府以广汉郡南部和夜郎国地置犍为郡。犍为郡辖县中的四县——汉阳县、�䣕县、朱提县、堂琅县,即是以“夜郎”和“夜郎旁小邑”新设县。现代研究者指,在今云南省曲靖市下属的宣威市境内。此后,由于夜郎所在西南夷反复叛乱,�䣕县短暂存在即消失。仅余朱提县、汉阳县:21—22。《大清一统志·叙州府二》则将隋朝末年,在今四川省宜宾市设置的�䣕县视为西汉�䣕县的延续。
  • HK PSG1狙击步枪PSG-1(德文:Präzisions-Scharfschützen-Gewehr,意为:“特等射手步枪”),是由黑克勒-科赫生产的一种半自动狙击步枪。据说此枪是出于对1972年夏季奥运会慕尼黑惨案的回应而研发的。当时的西德警察无法迅速与恐怖分子交战从而保护人质。黑克勒-科赫自此后受委托研发一种高精度,大容量弹匣,适合警用的半自动步枪。PSG-1因其可靠性和良好的表现受到广泛赞誉,通常和精锐狙击作战单位联系在一起。但由于此枪高昂的费用(每支12000美元)和美国政府的进口限制,截止至2005年底此枪在美国
  • 佐野友昭佐野友昭(1968年4月14日-),前日本足球运动员。