C++托管扩展

✍ dations ◷ 2025-11-29 17:57:13 #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++ 与其它编程语言在类似观念上的差异。

缺点

优点

缺点



相关

  • 宽容宽容是一个用于社会,文化和宗教信仰背景下的术语,指对于持不同意见的人表示一定的理解。佛瑞德·鲁斯金和斯坦福的同事们研究了宽容在心理学和情感学的作用,他说:“宽容可以减少
  • 菜油甾醇(1S,2R,5S,10S,11S,14R,15R)-2,15-二甲基-14-四环-7-十七烯-5-醇菜油甾醇(英语:Campesterol,菜油甾-5-烯-3β-醇,Ergost-5-en-3β-ol)是一种天然的植物固醇,存在于许多蔬菜、果实
  • 劳特岛劳特岛是印度尼西亚的岛屿,位于望加锡海峡,属于大巽他群岛的一部分,由南加里曼丹省负责管辖,面积2,062平方千米,最高点海拔高度725米,人口约80,000。坐标:3°40′50″S 116°09′49
  • 参议院 (比利时)参议院(法语:Sénat;荷兰语:Senaat;德语:Senat)是比利时联邦议会的上议院,和众议院共同组成了比利时联邦议会。在1993年宪法之前,参议院拥有和众议院平等的权力。在1993年宪法修改之
  • KBS演技大奖KBS演技大奖(朝鲜语:KBS 연기대상/KBS 演技大賞 ;英语:KBS Drama Awards)是由韩国KBS电视台自1987年起举办的年度戏剧颁奖典礼。颁奖典礼定于每年12月31日举行,由KBS2直播。另外由
  • 索斯·苏汉纳索斯·苏汉纳(英语:Sos Suhana,1992年4月4日-),柬埔寨足球运动员,司职中场,现时效力于柬埔寨联赛球队金边皇冠。
  • 1988年热带风暴基斯热带风暴基斯(Tropical Storm Keith)是1988年大西洋飓风季的第11个热带风暴,也是继1925年大西洋飓风季以来在一个自然年中以最晚日期袭击美国本土的北大西洋热带气旋。这场风暴
  • 太空探险公司太空探险公司(Space Adventures)美国的太空旅游公司,埃里克·C·安德森成立于1998年弗吉尼亚州。截至2010年,太空探险公司产品包括零重力飞行,轨道航天飞行和其他有关飞行,其中包
  • 硝河硝河,是中国长江流域的一条河流,汇入牛栏江,属于金沙江水系。河长106千米,流域面积1457平方千米,年均流量13立方米每秒。自然落差1063米。水能理论蕴藏量7万千瓦。
  • 崇俊崇俊(1831年-?),字雨岑,号志斋,一号显臣,佟佳氏,满州正蓝旗人,清朝政治人物。进士出身。同治十年,登进士。光绪3年(1877年),担任清朝遵义府婺川县知县。后由冉崇俊接任。