e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> ASP.net教程 >> C++/CLI实战——HELLO >> 教程正文
 
教程搜索
 
 
相关教程
  • C++/CLI实战——HELLO
  • VC编写简单的序列号(SN)填写器
  • Visual Studio 2005体验泛型编程
  • C++/CLI基本数据类型探索
  • 用托管C++编写Windows服务
  • Visual C++ 2005图像编程之属性设置栏
  • Visual C++ 2005图像编程之工具栏
  • Visual C++ 2005图像编程之预备知识
  • 把其他C/C++编译器集成到VC2005中
  • VC.NET实现清爽便利的Windows游戏窗口
  • C++:最强大的.NET语言之可访问性
  • C++:最强大的.NET语言之装箱
  • C++:最强大的.NET语言之内存与资源
  • C++:最强大的.NET语言之对象构造
  • Visual C++2005中开发自定义绘图控件
  • C++/CLI程序进程之间的通讯
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
C++/CLI实战——HELLO
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9
管理时可以很有效地工作,当可用内存空间严重不足时,垃圾回收器会发挥作用并解决问题。但是当对象涉及的是某些重要资源,比如数据库连接、某种 类型的锁、本地堆内存时,不确定性终止化的表现却不尽人意。在这种情况下,最好是尽快释放不再需要的资源。目前CLI采用的解决办法是:某个类在其 IDisposable 接口的 Dispose 方法中释放资源,这里的问题是 Dispose 需要显式调用,因此它不可能被执行。


C++的基本设计模式是前述的资源获取(Resource Acquisition )即初始化(Initialization),它意味着类通过构造函数 获取资源,相反,通过析构函数来释放资源。在类对象的生存期内是自动管理的。

以下是引用类型释放资源的过程:

用析构函数压缩在释放资源过程中必须的代码;

自动调用绑定到类对象生存期的析构函数;

CLI中,引用类型的类没有类析构的概念,因此,析构函数被映射到底层实现中另外的东西上,编译器则在内部完成如下转换:

类具备其基类列表,从接口 IDisposable 延伸继承;

析构函数被转换成IDisposable 的 Dispose 方法;

这仅仅完成了一半,还需要一种析构函数的自动调用途径。支持引用类型专用的基于堆栈的符号,也就是说其生命期与其声明的范围相关联。编译器 在内部转换符号,在托管堆中分配引用对象。随着范围的终止,编译器插入一个对 Dispose 方法的调用——用户定义的析构函数。与该对象关联的实际内存的回收仍然在垃圾回收器的掌控之下。例如如 Figure 1 所示。

C++/CLI 不仅仅是C++到管理世界的扩展,相反,它表现了一种完全的编程范例,类似于早期多重继承和泛型编程范例集成到该语言一样,我认为这个团队完成了一项杰出的工作。

那么,你是如何看待 C++/CLI 的呢?

C++/CLI代表了本地和托管编程的综合,在这个反复过程中,这种综合通过即独立而又等同的源码级和二进制元素共同体来完成,包括混合模式(本机和CTS类型的源码级混合,以及本机和CIL对象文件的二进制混合), 本地类型和CTS类型的混合,新增了混合本地对象和CIL对象的二进制文件),纯模式(本机和CTS类型的源码级混合,所有编译过的 CIL 对象文件),本机类(仅通过专门的包装类才可以操控 CTS 类型),以及 CTS 类(只能以指针形式操控本机类型)。

当然,C++/CLI 程序员也可以选择单独用 CLI 类型来编程,在这种方式中提供能被寄宿的可验证代码,比如 SQL Server 2005 中的存储过程。

现在,回到什么是 C++/CLI 的问题,它是进入.NET编程模型的第一道门槛,有了 C++/CLI,你不仅具备了迁移 C++ 源代码库的途径,同时还可以迁移 C++ 专业技术。这让我感觉非常惬意。


上一页  1 2 
  • 上一篇教程: VC编写简单的序列号(SN)填写器
  • 下一篇教程: 没有了
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.