C++托管扩展

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

缺点

优点

缺点



相关

  • 肾上腺酸肾上腺酸(英语:Adrenic acid),又称二十二碳四烯酸(英语:Docosatetraenoic acid),化学式为C22H36O2。肾上腺酸是一种有22个碳原子组成的长链不饱和脂肪酸,在长链中有四个不饱和键。肾
  • 原型原型是首创的模型,代表同一类型的人物、物件、或观念。原型在文学与心理学中很重要。原型往往被以后的作者一再的重复模仿与重塑。荣格分析心理学中有四大原型:其他分析心理学
  • 伊迪特·索德格朗伊迪特·伊蕾内·索德格朗(瑞典语:Edith Irene Södergran,1892年4月4日-1923年6月24日),是芬兰瑞典语女诗人。她是瑞典语文学史上最早的现代主义作家之一。她深受法国象征主义、
  • NamoriNamori(日语:なもり),1987年6月25日-)是日本女性漫画家,血型为B型。她出生于富山县,居于京都府。大学时住在名古屋。据其所言,她从小学时代就想当漫画家了。成为漫画家后,喜欢在咖啡厅
  • 隔世琴缘《隔世琴缘》(韩语:은행나무 침대,英语:),为1996年韩国剧情电影,由韩国著名导演姜帝圭编剧及执导,韩石圭、沈慧珍、陈熙琼及申铉濬主演。本片是姜帝圭首次执导的电影处女作。故事讲
  • 高木美佑高木美佑(1996年9月8日-)是日本的女性声优,宫城县出生。81 Produce所属。在2012年举办的avex×81 Produce“Wake Up, Girls! AUDITION”第2回动画歌曲、主唱甄选中合格。并于201
  • 前山 (玉环)坐标:28°03′22″N 121°24′33″E / 28.05624°N 121.40912°E / 28.05624; 121.40912前山,也称前山岛,是中华人民共和国浙江省台州市玉环市鸡山乡辖下的一个岛屿。前山岛在
  • 2011年美国告示牌年终百强单曲榜《告示牌》每年年终都会根据歌曲的榜单成绩而发布单曲年终百强单曲榜。2011年,年度榜单于12月9日发布,而榜单排名计算于2010年12月4日到2011年11月26日的单曲榜单成绩表现。20
  • 陈仲陈仲(1956年-),福建福州人,汉族,中华人民共和国政治人物、第十二届全国人民代表大会广西地区代表。毕业于上海机械学院机械专业。加入中国致公党。担任广西桂林电器科学研究所所长,致公党广西壮族自治区委员会副主任委员、桂林市委员会主任委员。2008年起担任全国人大代表。2013年,担任全国人大代表。
  • 张碧渊张碧渊(台湾话:.mw-parser-output .sans-serif{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Lato,"Helvetica Neue",Helvetica,Arial,sans-serif}Tiuⁿ Phek-ian;?-?),本名张碧珚,为台湾日治时期的女性作家,张深切的妹妹。彰化高女、东京女子大学药学科毕业,曾参与《台湾文艺》。其至今仍可查证的作品为1934年发表的小说〈罗曼史〉。