C++托管扩展

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

缺点

优点

缺点



相关

  • 咬甲癖咬甲癖是在紧张、压力、饥饿或无聊状态下啃咬指甲或趾甲的习惯性行为。有时也是心理或情绪失控的症状。这是一种强迫性、甚至是无意识的行为习惯,患者有时无法或难以意识到自
  • 期 (地质学)期(age)是指地质学和考古学的一个时间单位,划分世为更小的时间周期,也被时划分为更小的时间周期。格陵兰期、诺斯格瑞比期和梅加拉亚期大型哺乳动物首次出现(相当于熊或小型河马
  • 美国国会亚裔议员列表本列表收录了美国国会议员中的亚裔美国人。目前,国会中有10位亚裔众议员、1位亚裔参议员。自1957年起,共有30位亚裔众议员、7位亚裔参议员进入了国会。最早出现亚裔参议员的为
  • 石狩锅石狩锅(日语:石狩鍋/いしかりなべ)是一道日本北海道的乡土料理,是以味噌调味过的鲑鱼为主要食材的一道火锅料理。石狩锅虽然常常会被跟以腌制鲑鱼为主要食材的三平汁搞混,不过石狩
  • 公告牌 (杂志)《公告牌》(英语:,形象化为)杂志,是一个美国娱乐杂志和媒体品牌,由埃德里奇工业(英语:Eldridge Industries)旗下的公告牌-好莱坞报道传媒集团(Billboard-Hollywood Reporter Media Gro
  • 洗衣业洗衣业服务的经营模式,洗衣服务业的经营模式大致可分为以下列多类。服务对象以商业客户为主,目标客户为大小型酒店、宾馆、酒楼食肆、航空公司、美容院及桑拿、发型屋、保安及
  • 野岛健儿野岛健儿(野島健児、1976年3月16日-)是日本的男性声优。东京都杉并区出身。所属事务所为青二Production。※粗体字表示说明饰演的主要角色。
  • 说服性定义说服性定义是规定性定义的一种形式,旨在描述术语的真实或普遍接受的含义,而实际上却隐含了情感上的用法,通常是为了支持某种观点的论点和说服别人。这类定义的术语通常会涉及情
  • 安立奎·伊格莱西亚斯安立奎·米格尔·伊格莱西亚斯·普雷斯勒(西班牙语:Enrique Miguel Iglesias Preysler,1975年5月8日-),西班牙流行音乐唱作人。他在拉丁乐坛取得成功,在美国和拉丁美洲都十分受欢迎
  • 维克托·托洛孔斯基维克托·亚历山德罗维奇·托洛孔斯基(俄语:Виктор Александрович Толоконский,1953年5月27日-),俄罗斯政治人物,曾任克拉斯诺亚尔斯克边疆区行政长官、俄罗斯联邦总统驻西伯利亚联邦管区全权代表、新西伯利亚州州长等职。1978年毕业于新西伯利亚国立大学,同年加入苏联共产党。1991年至1993年,任新西伯利亚市执行委员会副主席。1994年当选新西伯利亚市议会主席。1996年3月当选市长。2000年1月当选新西伯利亚州州长。2010年9月,任俄罗斯联邦总统驻西伯利亚联邦管区全