C++/CLI 托管C++的数据类型介绍【2】

来源:互联网 发布:node.js 个人博客 编辑:程序博客网 时间:2024/06/05 10:28

CLI

公共语言基础构造(Common Language Infrastructure),是由ECMA(欧洲计算机制造商协会)成立专家组,并结合ISO

、开发形成的一个可扩展语言标准

      C++/CLI目的是把C++带到CLI平台上,使C++能够在CLI平台上发挥最大的能力,而并非把C++约束在CLI平台(CLI本身也是

ISO标准化的)上。相反,原来标准C++的能力丝毫没有减弱,并且,通过C++/CLI中的标准扩展,C++具有了原来没有的一系列

的.NET特性以及动态编程能力。这些扩展并非是专有的,而是以一种标准的方式呈现。

 

值类型(value type)

[1] 常见类型

内置值类型(基本数据类型)、自定义值类型、枚举类型等;

 

[2] 说明   

类型既可以像 C++ 程序中那样使用堆栈语义在堆栈内存直接创建或通过类型指针* 使用 new 堆内存中动态创建类型对

象;也允许通过定义类型的句柄 ^,使用gcnew托管堆内存中创建类型托管对象。


引用类型(ref type)


[1] 常见类型

如:内置引用类型(Object和String)、指针(追踪句柄tracking handle、内部指针interior pointer、固定指针pinning 

pointer)、自定义引用类型、数组类型、装箱值类型、委托、接口等。

 

[2] 说明

通过类型的句柄 ^(类对象的“跟踪指针”,^ 发音为“hat”)用gcnew运算符在托管堆内存创建类型的托管对象,也可以

句柄 ^指向一个已经存在的同类型的托管对象。系统的垃圾收集器通过句柄 ^,自动地跟踪托管对象的使用状态,并且在托管对

象不再被使用时,自动撤消和回收托管对象所占用的托管内存的空间,程序员可以无须自己管理。

 

注意:

C++/CLI 扩展同时提供了确定性非确定性销毁托管对象内存的功能,支持使用deletegcnew 动态创建类型的托管对象执

行撤消的用法,该语法还包括使用delete[]销毁一个托管数组所占用的内存,这个概念称为确定性销毁,注意,delete 实际上并没

有直接销毁托管对象的内存,它只是调用类型的析构函数对句柄 ^ 执行结束性的清理工作,而垃圾收集器将负责最终销毁和回收托

管对象的内存(非确定性销毁)。在处理表示某种资源(例如文件和网络连接)的对象时销毁顺序显然特别重要,因此,对于表示这种

资源的对象,最好采用手工删除的方法,以便确保内存何时被销毁。

 

[3] 初始化

将类型的句柄^初始化为“”,使用nullptr,如:

String ^firstPrompt =nullptr;

0 0
原创粉丝点击