C++托管扩展

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

缺点

优点

缺点



相关

  • 性伦理性伦理(英语:Sexual ethics)又称为性道德,或作性伦理学,是研究“人类性行为”或人类与性相关之“行为表达”的伦理学分支。性伦理试图从社会、文化和哲学的角度来理解或评估人际
  • 年轮年轮又称生长轮。年轮指的是树木由于周期性季节生长速度不同,而在木质部横切面上形成肉眼可分辨的层层同心轮状结构。当我们把树干打横锯开,露出一个横切面,会看到面上满布一个
  • +3UTC+03:00时区比协调世界时快上3小时,包含以下区域:大部分俄罗斯的欧洲领土包括莫斯科、圣彼得堡、顿河畔罗斯托夫、新地岛, 法兰士约瑟夫地群岛。从2014年10月26日开始,莫斯科
  • 石兼公博石兼公博(いしかね きみひろ、(1958年1月4日-) ),日本外交官。曾担任外务省亚太局、综合外交政策局长、驻加拿大大使兼驻国际民航组织代表,现任日本驻联合国代表。出生于山口县。19
  • 蔡以台蔡以台(1729年-?),字季实,号兰圃。枫泾南镇(今上海金山)人。是枫泾两状元之一。清朝雍正七年(1729年)出生,蔡以台自幼记识过人、勤奋异常,乡塾曾亲向其父请求为其免费授学。15岁时,便通过
  • 色丹岛色丹岛(日语:色丹島/しこたんとう  */?),俄罗斯称之为希科坦岛(俄语:Шикотан,罗马化:Shikotan,一译施科坦岛),是日俄争议领土南千岛群岛中的一个岛屿。现为俄罗斯实际控制,属远
  • 尼加拉瓜文学尼加拉瓜文学可追溯到前哥伦布时代的描述土著人民世界观的神话和口头文学。 而这些故事仍在尼加拉瓜为人所认识。 像许多拉丁美洲国家,西班牙征服者在文化和文学都有着重大影
  • 团结户团结户是中国大陆的一种城市居民楼户型结构。为小型的家庭住宅,特点是两户人家合住一个单元(一般一家一居室),共用大门和厕所。厨房则共用或者合用。比筒子楼的隐私性要强,但因为
  • 维道古律斯站 (马尼拉轻轨)维道古律斯站(他加禄语:Estasyon ng Vito Cruz)位在马尼拉马拉提区(英语:Malate, Manila),属于马尼拉轻轨1号线的车站,于1984年12月1日正式启用。该车站邻近塔夫脱大道(英语:Taft Aven
  • 儿童性旅游儿童色情旅游(英语:Child Sex Tourism)是为了参与儿童性交易而进行的一种旅游,这在商业上促进了儿童性虐待的发生。 联合国《儿童权利公约》里对