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 扩展同时提供了确定性和非确定性销毁托管对象内存的功能,支持使用delete对gcnew 动态创建类型的托管对象执
行撤消的用法,该语法还包括使用delete[]销毁一个托管数组所占用的内存,这个概念称为确定性销毁,注意,delete 实际上并没
有直接销毁托管对象的内存,它只是调用类型的析构函数对句柄 ^ 执行结束性的清理工作,而垃圾收集器将负责最终销毁和回收托
管对象的内存(非确定性销毁)。在处理表示某种资源(例如文件和网络连接)的对象时销毁顺序显然特别重要,因此,对于表示这种
资源的对象,最好采用手工删除的方法,以便确保内存何时被销毁。
[3] 初始化
将类型的句柄^初始化为“空”,使用nullptr,如:
String ^firstPrompt =nullptr;
- C++/CLI 托管C++的数据类型介绍【2】
- C++/CLI 托管C++的基本数据类型及函数【3】
- C++/CLI 托管C++的数组介绍【4】
- C++/CLI托管
- 托管C++、C++/CLI、CLR
- C++/CLI 托管C++的托管与非托管字符串的相互转换【1】
- C++/CLI学习笔记1—新的托管类型
- C++/CLI学习笔记1—新的托管类型
- C++/CLI 简单介绍
- C++/CLI与非托管并列缓存
- VS2005 C++/CLI的托管代码与非托管代码的互操作性
- 托管与非托管间的代码级桥梁——C++/CLI
- 托管与非托管间的代码级桥梁——C++/CLI
- Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)
- Unity3d 载入 C++/CLI (托管模式c++) 的动态库(DLL)
- C/C++的数据类型介绍
- C#调用非托管C编写DLL的数据类型转换
- 在C++/CLI的本地类中包含托管类成员变量的方法
- 九度OJ 1010 A+B
- 贪吃蛇,c,c++
- Use ogre rtt in cegui 0.8
- 黑马程序员_java编程基础
- java学习day01
- C++/CLI 托管C++的数据类型介绍【2】
- 新年快乐
- C C++相互调用
- 蛇形矩阵
- Linux NFS mount挂载
- iOS正则表达式
- C++和C语言函数相互调用之二
- 约瑟夫问题——历史的真相
- 在看到厄尔巴岛之前,我曾经不可一世