快速业务通道

实例解析C++/CLI之开卷有益

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-30
被装箱为Object^。一旦执行到WriteLine,它会调用第二个和第三个参数的ToString函数,并输出结果字符串。以下是程序的输出:

p1 = (0,0), p1''s HashCode = 0
p1 = (5,7), p1''s HashCode = 11
p1 Equals Point(9, 1) = False

垃圾回收:由句柄p1引用的内存驻留于托管堆中,而托管堆则处于垃圾回收器"监视"之下,当一个句柄超出作用域时,其引用的内存就少了一个与此相联的句柄,继而当句柄计数为零时,内存就被自动回收了。如果一个句柄在某段时间内并没有超出作用域,但你已不需要其引用的内存了,就可以设置句柄为nullptr来减少其的引用计数,在此,没有办法来显式释放一块托管内存。另外,也可以对句柄调用delete,它会马上运行析构函数(Dispose函数),但这块内存仍不会被回收,直到垃圾回收器决定回收它。

编译程序

如果要把Point与main程序放在两个不同的程序集中,必须创建两个项目--为Point类创建Point项目,为应用程序创建Main项目。

要创建Point项目,可在Visual Studio.NET 2005中选择"文件|新建|项目|空项目"(不要选择"类库")。在"解决方案资源管理器"中找到"源文件",鼠标右键单击选择"添加|新建项",在对话框左边的类别栏中选择"代码",接着在右边选择"C++文件",输入Point名称,并在打开的文件中粘贴例1中代码,保存文件。

在"解决方案资源管理器"中,右键单击项目名Point,首先,选择"属性|配置属性|常规",把"配置类型"改为"动态库(.dll)",选择"公共语言运行库支持"为"公共语言运行库支持(/clr)";其次,在"C/C++|代码生成"中,把"运行时库"改为多线程 DLL (/MD);最后,在"链接器|常规"栏中,把"输出文件"后缀名从.exe改为.dll。

虽然在选择"类库"时,这些都是由Visual Studio.NET 2005自动完成的,但它会生成一大堆你不需要的支持文件。此时,选择"生成",就会在Point\debug目录中找到Point.dll了。

创建Main项目与创建Point项目非常类似,除了这个项目叫做"Main",且源文件为Main.cpp外。(在此有一个小技巧,你可以运行Visual Stuio.NET的两个实例,这样,你就可以同时编辑两个项目了。)默认情况下,选择"空项目"会生成一个.exe文件,这正是我们想要的。因为Main.cpp引用了Point类型,所以需要告诉编译器在哪可以找这个类型的父类程序集:首先,在"解决方案资源管理器"中,右键单击项目名Main,依次选择选择"属性|配置属性|常规",选择"公共语言运行库支持"为"公共语言运行库支持(/clr)",点击对话框的"应用"按钮;其次,在"通用属性|引用|添加新引用"对话框中,选择"浏览"选项页,定位至Point目录的Point.dll文件,点击"确定"退出;最后,在"C/C++|代码生成"中,把"运行时库"改为多线程 DLL (/MD)。此时,选择"生成",就会在Main\debug目录中生成Main.exe了,执行此文件,就可以看到相应的输出。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号