C++:大的.NET语言之对象构造

C++:大的.NET语言之对象构造,第1张

C++:大的.NET语言之对象构造,第2张

简介

Visual C++开发团队花了很多时间听取用户的意见。经过仔细考虑。NET和C++之后,它决定重新设计Visual C++ 2005中对公共语言运行时库(CLR)的支持。这种重新设计被称为“C++/CLI”,它将为使用和编写CLR类型提供更自然的语法。在本文中,我们主要讨论新的语法,并将其与CLR平台上非常相似的语言C#和托管C++进行比较。在本文中,我们还将通过图表展示与local C++的相似之处。

公共语言运行时库(CLR)包括一组规范,是微软的基础。NET和微软版CLI的实现。C++/CLI语言设计的目标是为CLI提供更自然的C++支持,而Visual C++ 2005的编译器是在CLR上实现C++/CLI的。

仔细研究Visual C++ 2005编译器和C++/CLI语言设计后,我们会发现它们传达了两个重要的信息。首先,Visual C++将自己定位为CLR平台上最底层的编程语言(似乎没必要使用其他语言——包括MSIL);其次,。NET编程应该像本地C++编程一样自然。

这篇文章是针对C++程序员的,但是我不想劝你放弃C#或者Visual Basic.net。如果你非常喜欢C++,想要继续使用传统C++提供的所有功能,但是你想要C#一样的编程效率,那么这篇文章正好适合你。此外,本文不是对CLR或。NET Framework,但主要关注Visual C++ 2005如何使您能够在。NET框架。

客体结构

CLR定义了两种类型:值类型和引用类型。值类型是为高效分配和访问而设计的。它们大致类似于C++的内置类型,你也可以创建自己的类型,也就是比雅尼·斯特劳斯特鲁普所说的具体类型;另一方面,引用类型旨在提供面向对象编程所需的功能,并可用于创建具有层次结构的类:例如,派生类和虚函数。此外,在CLR中,引用类型从头到尾都提供了额外的运行时特性,比如自动内存管理——通常称为垃圾回收。同时,CLR还为引用类型和值类型提供准确的运行时类信息,这通常称为反射。

值类型是在堆栈上分配的;引用类型通常在托管堆中分配——这是由CLR垃圾收集机制管理的堆。如果你用C++写汇编代码,和往常一样,你可以在CRT堆中分配本地C++类型。将来,Visual C++开发团队甚至允许在托管堆中分配本地C++类型。毕竟,垃圾收集对于局部类型来说也是一个很有吸引力的话题。

C++允许你选择在哪里创建一个特定的对象,任何类型都可以在堆栈或CRT堆中分配。

//在堆栈上分配
STD::wstring stack object;

//在CRT堆中分配
STD::wstring * heap object = new STD::wstring;

如上图,在哪里分配对象是独立于类型的,主动权完全掌握在程序员手中。另外,栈和堆的分配语法很容易区分。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++:大的.NET语言之对象构造

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情