1. 什么是C++/CLI?(又称Managed C++,托管C++)
托管(Managed) 是.NET的一个专门概念,它是融于通用语言运行时(CLR)中的一种新的编程理念,通用语言运行时是.NET 框架应用程序的执行引挚。它提供了许多服务,其中包括:代码管理(装入和执行)、类型安全性验证、元数据(高级类型信息)访问、为管理对象管理内存、管理代码,COM对象和预生成的DLLs(非管理代码和数据)的交互操作性、对开发人员服务的支持等等。
也就是说,托管C++意味着,我们的代码可以被CLR所管理,并能开发出具有最新特性如垃圾自动收集、程序间相互访问等的.NET框架应用程序。
可见,Managed C++(下称MC++)是有别于原来的C++(下称VC++)的一种新的而且十分特殊的.NET语言。
MC++的特殊之处在于Micorsoft为MC++提供了一种称之为“随心而动-it just works”的Interop机制,后称“Interop技术”。即对程序中的每一个本地方法,MC++编译器同时生成一个托管和非托管进入点,它们中只有一个是真正方法的实现,另一个则是转发器,可进行相应的转换和必要的调度。托管进入点通常是真正方法的实现,除非代码不能解释为MSIL或开发者使用“#pragma unmanaged”强制指定进入点的实现为本地机器码。当一个IJW转发器起作用时——例如转发到本地代码中,编译器提供转换的实现,并且通过偏移或IAT(Import Address Table)调用实际的实现代码;
MC++是随VS 2003问世的,但其前进道路却不顺利,VS2003版的MC++语法十分笨拙不受程序员的欢迎,之后VC++小组又重新编写了较为优雅的新语法,称为"C++/CLI",但前后两种语法的问世,也造成了一定的混乱,这篇文章的主旨之一,就是澄清2003版和C++/CLI之间的语法区别。
MC++提供了托管代码和非托管代码之间的桥梁,如果你的工作不涉及托管环境,则可以直接忽略MC++的语法,只关注VC++。对于工作在托管环境的程序员,MC++提供了一些有趣场景:
1. 提供了原有代码向托管环境的迁移手段,比如我正在做的项目,就是将Webkit迁移到.NET平台上来。而最有名的案例当属DOOM小组,他们在三天内完成了DOOM.NET!
2. 保护商业机密,你可以将核心代码置于VC++之中编译成非托管的二进制代码而不被人反编译。
3. 提供底层硬件访问机制,等等。
4. Windows下各种SDK提供了丰富的类库(lib),足以取代许多多余的框架。
二、MC++的语法演进
我们至今能可以看到2003版的MC++的语法,在其托管扩展中定义垃圾回收类、属性等等常用到的双下划线关键字:
//老旧的MC++语法
public __gc __sealed class Student
{
private:
double m_grade;
String* m_name;
public:
__property double get_Grade() { return m_grade; }
__property void set_Grade(double newGrade) { m_grade = newGrade; }
__property String* get_Name() { return m_name; }
__property void set_Name(String* newName) { m_name = newName; }
}
现在这些为更接近C#的语法所取代,因此强烈建议使用MC++的程序员将代码迁移到新的C++/CLI语法上来。上面的例子在C++/CLI的写法为:
//新的C++/CLI语法
public ref class Student sealed
{
private:
double m_grade;
public:
// 标准属性语法
property double Grade
{
double get() { return m_grade; }
void set(double newGrade) { m_grade = newGrade; }
}
//其他属性
property String^ Name;
}
在新语法中的类型被声明为“什么的类”,前置的形容词描述了你将创建什么样的类,如下所示:
class N { /*…*/ }; //本地类型
/*-----------CLR的类型------------*/
ref class R { /*…*/ }; // CLR引用类型
value class V { /*…*/ }; // CLR值类型
interface class I { /*…*/ }; // CLR界面接口类型
enum class E { /*…*/ }; // CLR枚举类型
我们将逐一介绍新的C++/CLI语法,并附带如何将原来的MC++语法迁移到C++/CLI上。
分享到:
相关推荐
标题:“C++/CLI教程”指的是一个专门针对C++/CLI(C++ Common Language Infrastructure)编程语言的教程。C++/CLI是微软设计的一种编程语言,旨在将C++的强大功能与.NET平台的互操作性相结合。它允许开发者使用C++...
C++/CLI是微软.NET框架下的一种编程语言,它提供了C++与.NET Framework的交互能力。这个"C++CLI实例.zip"文件包含了一系列关于C++/CLI的实践案例,旨在帮助初学者理解如何使用C++/CLI进行.NET开发,以及如何进行CLI...
C++/CLI是Microsoft为.NET框架设计的一种编程语言,它允许开发者编写混合模式的代码,即同时包含托管代码(.NET)和非托管代码(C++)。C++/CLI提供了一种机制,使得C++类可以被.NET环境理解和使用,同时也能够调用...
本书《Expert C++/CLI: .NET for Visual C++ Programmers》由Marcus Heege编写,是一本专为想要深入理解如何在.NET环境中利用Visual C++进行编程的读者而设计的书籍。以下是对本书涉及的主要知识点的详细解析。 ###...
DirectX在C++/CLI中的应用是一个将原生C++使用的DirectX图形库与.NET Framework的用户界面(UI)相结合的技术。DirectX是由微软开发的一组API,主要用于处理游戏、多媒体和其他高性能图形任务。它包括多个子组件,如...
C++/CLI是一种微软开发的语言,它扩展了标准C++,使其能够无缝地与.NET Framework交互。这本书"**c++/cli language cli语言英文版**"对于那些希望深入理解C++/CLI并学习如何利用其功能来开发.NET应用程序的初学者来...
总之,"Expert C++/CLI Source Code"提供了一个深入了解C++/CLI语言特性和实践技巧的窗口,通过对这些源码的研读和实践,开发者可以提升自己在.NET平台上使用C++的能力,更好地应对复杂的跨平台开发挑战。
Instead, youll learn how to write .NET applications using C++/CLI. <br>This book is based on its highly successful predecessor, and bridges the gap between classic C++ and C++/CLI. Furthermore, ...
C++/CLI(之前称为Managed C++)是C++的一个扩展,它引入了新的语法和特性,以适应.NET平台的需求。 **下载说明.HTM** 可能包含关于如何下载、安装和使用这份规范文档的详细步骤,以及可能的注意事项和版权信息。...
Visual C++/CLI从入门到精通 扫描版
C++/CLI代码运行在CLR之上,因此能享受其提供的所有服务。 8. **编程实践**:文档可能还会涉及实际编程技巧,如如何编写高效且符合.NET编码规范的C++/CLI代码,以及调试和性能优化的方法。 9. **案例分析**:可能...
什么是 C++/CLI 个人感觉将其看作是位于静态程序设计和动态程序设计之间的一座桥梁。C++ 既C++ 编程语言编程语言; CLI 即通用语言基础构造( Common Language Infrastructure ),这是一个支持动态组件编程模型的...
C++/CLI是一种微软开发的语言扩展,它使得C++能够无缝地与.NET Framework交互,提供了一种混合编程的机制,可以同时利用C++的强大功能和.NET的便利性。本资料主要针对C++/CLI的学习,旨在帮助开发者理解和掌握这一...
In a very similar way, C++/CLI is layered on top of C++. C++/CLI provides a high degree of source code compatibility with C++. As a consequence, the following code is valid if you build the program ...
[Microsoft Press] Visual C++/CLI 从入门到精通 (英文版) [Microsoft Press] Microsoft Visual C++/CLI Step by Step (E-Book) ☆ 出版信息:☆ [作者信息] Julian Templeman [出版机构] Microsoft Press ...
Microsoft Visual C++/CLI Step by Step (pdf + ePub) Publisher: Microsoft Press (August 2, 2013) Language: English ISBN-10: 0735675171 ISBN-13: 978-0735675179 Your hands-on guide to Visual C++/CLI ...
**C++/CLI**(C++ for Managed Code)是微软针对.NET框架设计的一种编程语言扩展,允许程序员利用熟悉的C++语法编写面向.NET公共语言运行库(Common Language Runtime, CLR)的应用程序。《C++/CLI的基础:Visual ...
1. **托管代码与非托管代码**:C++/CLI能够编写混合模式的代码,即同时包含托管代码(运行在.NET Framework之上的代码)和非托管代码(传统的C++代码,直接运行在操作系统上)。托管代码享有.NET Framework提供的...
C++/CLI是C++语言面向CLI平台的一个重要扩展,不仅解决了原有托管C++的一些弱点,还引入了许多新特性来充分利用.NET框架的优势。对于开发者而言,了解这些变化是非常重要的,可以帮助他们更有效地利用C++/CLI编写高...