﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-万星星-随笔分类-ACDK</title><link>http://www.cppblog.com/wlwlxj/category/5870.html</link><description>&lt;div&gt;一个吃软饭的男人!!!!!我只想写程序####&lt;br&gt;师夷之技以制夷   吾尝终日而思矣,不如须臾之所学也&lt;br&gt;喝碗孟婆汤,踏过奈何桥,涅槃&lt;/div&gt;
I've been programming since I was 21. Started with C++, looked at Java, keen on Visual Basic and Visual C++, thinking about .NET and C#.^_^,very ridiculous.</description><language>zh-cn</language><lastBuildDate>Mon, 19 May 2008 21:16:59 GMT</lastBuildDate><pubDate>Mon, 19 May 2008 21:16:59 GMT</pubDate><ttl>60</ttl><item><title>ACDK 的学习之旅--(5) 第一个小应用</title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/28/39846.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Fri, 28 Dec 2007 09:05:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/28/39846.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39846.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/28/39846.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39846.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39846.html</trackback:ping><description><![CDATA[&nbsp;通过几天的学习，发现这个库不小，里面有不少地方也是需要好好理解的。不过，好的是代码结构非常之清晰，看起来就舒服。<br><br>使用他的cfg脚本引擎做了一个demo，解析器。<br><br>code：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;acdkmain(RStringArray&nbsp;args)<br><img id=Codehighlighter1_32_729_Open_Image onclick="this.style.display='none'; Codehighlighter1_32_729_Open_Text.style.display='none'; Codehighlighter1_32_729_Closed_Image.style.display='inline'; Codehighlighter1_32_729_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_32_729_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_32_729_Closed_Text.style.display='none'; Codehighlighter1_32_729_Open_Image.style.display='inline'; Codehighlighter1_32_729_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_32_729_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_32_729_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_40_686_Open_Image onclick="this.style.display='none'; Codehighlighter1_40_686_Open_Text.style.display='none'; Codehighlighter1_40_686_Closed_Image.style.display='inline'; Codehighlighter1_40_686_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_40_686_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_40_686_Closed_Text.style.display='none'; Codehighlighter1_40_686_Open_Image.style.display='inline'; Codehighlighter1_40_686_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_40_686_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_40_686_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;code&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;String();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::acdk::cfgscript::RScript&nbsp;script&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;::acdk::cfgscript::Script(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;mem&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;::acdk::cfgscript::RProps&nbsp;props&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;::acdk::cfgscript::Props();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(code</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">compareToIgnoreCase(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_269_683_Open_Image onclick="this.style.display='none'; Codehighlighter1_269_683_Open_Text.style.display='none'; Codehighlighter1_269_683_Closed_Image.style.display='inline'; Codehighlighter1_269_683_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_269_683_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_269_683_Closed_Text.style.display='none'; Codehighlighter1_269_683_Open_Image.style.display='inline'; Codehighlighter1_269_683_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_269_683_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_269_683_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System::out</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wlw:&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;System::in</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">readLine();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">code</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">endsWith(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">))<br><img id=Codehighlighter1_368_396_Open_Image onclick="this.style.display='none'; Codehighlighter1_368_396_Open_Text.style.display='none'; Codehighlighter1_368_396_Closed_Image.style.display='inline'; Codehighlighter1_368_396_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_368_396_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_368_396_Closed_Text.style.display='none'; Codehighlighter1_368_396_Open_Image.style.display='inline'; Codehighlighter1_368_396_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_368_396_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_368_396_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;code&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;code&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wlw=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">code;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;script</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">eval(code,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">props,&nbsp;::acdk::cfgscript::ScriptReadWriteParent);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;val&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;props</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getEvaluatedStringVal(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">wlw</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System::out</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">print(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System::out</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">println(val);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System::out</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">=====================================</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(RThrowable&nbsp;ex)<br><img id=Codehighlighter1_711_714_Open_Image onclick="this.style.display='none'; Codehighlighter1_711_714_Open_Text.style.display='none'; Codehighlighter1_711_714_Closed_Image.style.display='inline'; Codehighlighter1_711_714_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_711_714_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_711_714_Closed_Text.style.display='none'; Codehighlighter1_711_714_Open_Image.style.display='inline'; Codehighlighter1_711_714_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_711_714_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_711_714_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>效果：<br><img src="http://www.cppblog.com/images/cppblog_com/wlwlxj/730/o_acdk_hello_001.PNG" border=0>
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39846.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-28 17:05 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/28/39846.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACDK 的学习之旅--(4) ACDK中的元信息Metainfo(RTTI)</title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/26/39667.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Wed, 26 Dec 2007 04:00:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/26/39667.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39667.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/26/39667.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39667.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39667.html</trackback:ping><description><![CDATA[<br>这个基本就是ACDK最精华的地方了吧。C++本身的元信息很少，借助RTTI可以在运行期识别对象类型，而模板也仅仅是在编译期依靠模板元达到目的。<br><br>ACDK本身就是基于元信息：一个支持挖掘类层次结构，字段，构造，方法的高级版本的RTTI。对应与java和.net的反射机制。<br><br>元信息可以用来提供垃圾回收、动态加载类，序列化，附加用户自定义属性，运行期动态访问对象的各个方面信息。我的理解Metainfo就是对类本身的一种解析，对编程语言的一种开放式扩展。<br><br>元信息（Metainfo）＝＝反射（Reflection）<br>编程语言中的元信息就是在编程语言中存在一种运行期编程语言的类型的内部构造信息。<br>很多解释型语言依赖元信息来构造复合类型，象lisp和perl。这些语言中最重要的就是元信息或者反射机制，也存在于java和.net中。<br><br>当然很多编译器只有有限的元信息机制，象C++的RTTI。你可以发现，你能够通过typeinfo获取类的名字，仅此而已，无法获得方法，成员，参数等等。当然com技术部分实现了metainfo，方法，成员，参数这些都可以从类型库中获取，但是仍然无法获取内部构造信息。<br><br>由于C++类型系统的复杂性，它本身没有实现反射机制。近年来最重要的两种语言java和C#实现了反射机制，这两种语言的类型系统要简单很多，他们都抛弃了C++中晦涩的部分，这是非常好的做法，我觉得C++程序员的大部分时间都花在这些事情上。<br><br><br>使用ACDK的元信息<br><br>元信息级别<br><br>1、无元信息<br>假如仅仅利用ACDK框架构造类，无需脚本调用，动态加载，类中可以不添加元信息<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">ACDK_DECL_CLASS(MyClass);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;MyClass&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;acdk::lang::Object,&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;acdk::lang::Comparable<br><img id=Codehighlighter1_104_289_Open_Image onclick="this.style.display='none'; Codehighlighter1_104_289_Open_Text.style.display='none'; Codehighlighter1_104_289_Closed_Image.style.display='inline'; Codehighlighter1_104_289_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_104_289_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_104_289_Closed_Text.style.display='none'; Codehighlighter1_104_289_Open_Image.style.display='inline'; Codehighlighter1_104_289_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_104_289_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_104_289_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;_myString;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_175_176_Open_Image onclick="this.style.display='none'; Codehighlighter1_175_176_Open_Text.style.display='none'; Codehighlighter1_175_176_Closed_Image.style.display='inline'; Codehighlighter1_175_176_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_175_176_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_175_176_Closed_Text.style.display='none'; Codehighlighter1_175_176_Open_Image.style.display='inline'; Codehighlighter1_175_176_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;MyClass()&nbsp;:&nbsp;_myString(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)&nbsp;</span><span id=Codehighlighter1_175_176_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_175_176_Open_Text><span style="COLOR: #000000">{}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;compareTo(IN(RObject)&nbsp;other)<br><img id=Codehighlighter1_213_244_Open_Image onclick="this.style.display='none'; Codehighlighter1_213_244_Open_Text.style.display='none'; Codehighlighter1_213_244_Closed_Image.style.display='inline'; Codehighlighter1_213_244_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_213_244_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_213_244_Closed_Text.style.display='none'; Codehighlighter1_213_244_Open_Image.style.display='inline'; Codehighlighter1_213_244_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_213_244_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_213_244_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;always&nbsp;equal</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_257_287_Open_Image onclick="this.style.display='none'; Codehighlighter1_257_287_Open_Text.style.display='none'; Codehighlighter1_257_287_Closed_Image.style.display='inline'; Codehighlighter1_257_287_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_257_287_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_257_287_Closed_Text.style.display='none'; Codehighlighter1_257_287_Open_Image.style.display='inline'; Codehighlighter1_257_287_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;foo()&nbsp;</span><span id=Codehighlighter1_257_287_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_257_287_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;_myString</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">length();&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;using&nbsp;it</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">RMyClass&nbsp;myClass&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;MyClass();</span></div>
类本身没有引用计数，引用计数依靠的是垃圾回收机制，这样的类是不符合脚本语言使用的。<br><br>2、基本的元信息<br>类派生结构<br>实现了ClassLoader功能<br><br>3、扩展的元信息<br>反射<br>序列化<br>脚本调用<br><br>4、动态方法调用代理<br>允许脚本语言使用C++接口<br>C++类派生，虚方法重写<br><br>实现了元信息的ACDK类可以通过名字来定位并加载。<br><br>原来.net中类型的属性信息就是可以用来实现AOP的咚咚？？？？妈的，就tmd扯概念啊。搞得我现在才弄明白这个概念。<br><br>
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39667.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-26 12:00 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/26/39667.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>嘿嘿 转载</title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39585.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Tue, 25 Dec 2007 07:25:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39585.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39585.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39585.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39585.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39585.html</trackback:ping><description><![CDATA[<br><span id=r_c_q_p0><span id=r_c_q_p0>80后承担了太多原本不应该他们的责任,如果没有文化大革命那80后现在不用承担原本不属于他们的发展责任如果没有多生孩子80后也不用千军万马挤高考,最后自费上学.70后用他们手中的钞票和座下的奔奔带走了我们的爱人,90后用他们无知的身体透支我们创造的财富价值,我们是时代跃进时期资本财富积累的殉道者.80后是我们的标签,英雄的标签,没有80后夜以继日的coding,哪有70后PM下班后的"把妹".80后是时代的标志,将来的历史书中会这样记载:"曾经有一群被称作80后的前辈们,用他们勤劳的手指为我们构筑了今天美好的生活,他们像耶稣一样用科技指引了我们今天生活的方向,同时却因种种社会分配的不公被钉上了些许不堪的标签,让我们缅怀这些开荒的牛仔们."请那些还在享受80后服务的60后70后甚至90后们,在评论80后时多花些时间考虑下自己的社会责任.</span></span>
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39585.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-25 15:25 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/25/39585.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACDK 的学习之旅--(3) ACDK中的类型 </title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39565.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Tue, 25 Dec 2007 04:24:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39565.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39565.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/25/39565.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39565.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39565.html</trackback:ping><description><![CDATA[<br>ACDK基于C++的模型（基本类型、接口、对象类，数组，异常，枚举和命名空间）组织了自己的类型模型。<br><br>1、基本模型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Object对象封装&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;位数(bit)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; bool&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Boolean&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Character&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uc2char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnicodeCharacter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uc4char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UnicodeCharacter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;23<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Byte&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;8<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Short&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;16<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;32&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;jlong&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 64<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 32<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Double&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;64<br><br><br>2、Enum类型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 使用C++的enum，假如需要考虑ACDK的元编译，需要使用宏：ACDK_DECL_ENUM，用来提供元信息。动态库需要导出类型的时候，使用ACDK_DEF_LIB_ENUM。不牵扯到元信息的Enum类型可以在定义的时候使用foreign关键字。<br><br>3、对象类型<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 必须直接或者间接从Object派生<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;declare&nbsp;the&nbsp;R-type&nbsp;RLegalAcdkClass<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;and&nbsp;the&nbsp;Array&nbsp;type&nbsp;LegalAcdkClassArray&nbsp;and&nbsp;RLegalAcdkClassArray</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">ACDK_DECL_CLASS(LegalAcdkClass);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;The&nbsp;class&nbsp;itself:</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;LegalAcdkClass&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;acdk::lang::Object&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;extend&nbsp;the&nbsp;Object&nbsp;class</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_236_483_Open_Image onclick="this.style.display='none'; Codehighlighter1_236_483_Open_Text.style.display='none'; Codehighlighter1_236_483_Closed_Image.style.display='inline'; Codehighlighter1_236_483_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_236_483_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_236_483_Closed_Text.style.display='none'; Codehighlighter1_236_483_Open_Image.style.display='inline'; Codehighlighter1_236_483_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_236_483_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_236_483_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ACDK_WITH_METAINFO(LegalAcdkClass);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;optional,&nbsp;for&nbsp;class&nbsp;information&nbsp;see&nbsp;Metainfo</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;message;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;constructor</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;LegalAcdkClass()&nbsp;:&nbsp;Object()&nbsp;,&nbsp;message(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_419_422_Open_Image onclick="this.style.display='none'; Codehighlighter1_419_422_Open_Text.style.display='none'; Codehighlighter1_419_422_Closed_Image.style.display='inline'; Codehighlighter1_419_422_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_419_422_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_419_422_Closed_Text.style.display='none'; Codehighlighter1_419_422_Open_Image.style.display='inline'; Codehighlighter1_419_422_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_419_422_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_419_422_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;a&nbsp;method</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;getMessage()<br><img id=Codehighlighter1_460_481_Open_Image onclick="this.style.display='none'; Codehighlighter1_460_481_Open_Text.style.display='none'; Codehighlighter1_460_481_Closed_Image.style.display='inline'; Codehighlighter1_460_481_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_460_481_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_460_481_Closed_Text.style.display='none'; Codehighlighter1_460_481_Open_Image.style.display='inline'; Codehighlighter1_460_481_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_460_481_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_460_481_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;message;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不能多继承类，但是可以提供一种更好的办法就是多继承接口。</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;declare&nbsp;the&nbsp;R-type&nbsp;RLegalAcdkClass<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;and&nbsp;the&nbsp;Array&nbsp;type&nbsp;LegalAcdkClassArray&nbsp;and&nbsp;RLegalAcdkClassArray</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">ACDK_DECL_CLASS(LegalAcdkClass);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;The&nbsp;class&nbsp;itself:</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;LegalAcdkClass&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;acdk::lang::Object&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;extend&nbsp;the&nbsp;Object&nbsp;class</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">implements</span><span style="COLOR: #000000">&nbsp;acdk::lang::Comparable&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;implements&nbsp;the&nbsp;interface</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_300_621_Open_Image onclick="this.style.display='none'; Codehighlighter1_300_621_Open_Text.style.display='none'; Codehighlighter1_300_621_Closed_Image.style.display='inline'; Codehighlighter1_300_621_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_300_621_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_300_621_Closed_Text.style.display='none'; Codehighlighter1_300_621_Open_Image.style.display='inline'; Codehighlighter1_300_621_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_300_621_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_300_621_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ACDK_WITH_METAINFO(LegalAcdkClass)&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;optional,&nbsp;for&nbsp;class&nbsp;information&nbsp;see&nbsp;Metainfo</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;message;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;implement&nbsp;the&nbsp;Comparable&nbsp;interface&nbsp;method</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;compareTo(IN(RObject)&nbsp;other)<br><img id=Codehighlighter1_502_577_Open_Image onclick="this.style.display='none'; Codehighlighter1_502_577_Open_Text.style.display='none'; Codehighlighter1_502_577_Closed_Image.style.display='inline'; Codehighlighter1_502_577_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_502_577_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_502_577_Closed_Text.style.display='none'; Codehighlighter1_502_577_Open_Image.style.display='inline'; Codehighlighter1_502_577_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_502_577_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_502_577_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;getMessage()</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">compareTo(RLegalAcdkClass(other)</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getMessage());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_601_619_Open_Image onclick="this.style.display='none'; Codehighlighter1_601_619_Open_Text.style.display='none'; Codehighlighter1_601_619_Closed_Image.style.display='inline'; Codehighlighter1_601_619_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_601_619_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_601_619_Closed_Text.style.display='none'; Codehighlighter1_601_619_Open_Image.style.display='inline'; Codehighlighter1_601_619_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;getMessage()&nbsp;</span><span id=Codehighlighter1_601_619_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_601_619_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;message;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp; Class信息</p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">RStringBuffer&nbsp;sb1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ACDK</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sb2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">JAVA</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RClass&nbsp;cls1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sb1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getClass();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RClass&nbsp;cls2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sb2</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">getClass();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">assert</span><span style="COLOR: #000000">(cls1&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;cls2);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;always&nbsp;true</span></div>
<p>&nbsp;&nbsp;&nbsp; 你可以定义不符合acdk规范的类型已经结构等，但是会失去acdk提供的一些特性。</p>
<br>ACDK的异常捕获需要注意：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;foo()<br><img id=Codehighlighter1_11_329_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_329_Open_Text.style.display='none'; Codehighlighter1_11_329_Closed_Image.style.display='inline'; Codehighlighter1_11_329_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_11_329_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_329_Closed_Text.style.display='none'; Codehighlighter1_11_329_Open_Image.style.display='inline'; Codehighlighter1_11_329_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_11_329_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_11_329_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_17_19_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_19_Open_Text.style.display='none'; Codehighlighter1_17_19_Closed_Image.style.display='inline'; Codehighlighter1_17_19_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_17_19_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_17_19_Closed_Text.style.display='none'; Codehighlighter1_17_19_Open_Image.style.display='inline'; Codehighlighter1_17_19_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000">&nbsp;</span><span id=Codehighlighter1_17_19_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_17_19_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_55_93_Open_Image onclick="this.style.display='none'; Codehighlighter1_55_93_Open_Text.style.display='none'; Codehighlighter1_55_93_Closed_Image.style.display='inline'; Codehighlighter1_55_93_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_55_93_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_55_93_Closed_Text.style.display='none'; Codehighlighter1_55_93_Open_Image.style.display='inline'; Codehighlighter1_55_93_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(acdk::io::RIOException&nbsp;ex)&nbsp;</span><span id=Codehighlighter1_55_93_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_55_93_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;handle&nbsp;here&nbsp;type&nbsp;of&nbsp;IOException.</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_117_155_Open_Image onclick="this.style.display='none'; Codehighlighter1_117_155_Open_Text.style.display='none'; Codehighlighter1_117_155_Closed_Image.style.display='inline'; Codehighlighter1_117_155_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_117_155_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_117_155_Closed_Text.style.display='none'; Codehighlighter1_117_155_Open_Image.style.display='inline'; Codehighlighter1_117_155_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">&nbsp;(RThrowable&nbsp;ex)&nbsp;</span><span id=Codehighlighter1_117_155_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_117_155_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;handle&nbsp;all&nbsp;other&nbsp;ACDK&nbsp;exceptions</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_157_327_Open_Image onclick="this.style.display='none'; Codehighlighter1_157_327_Open_Text.style.display='none'; Codehighlighter1_157_327_Closed_Image.style.display='inline'; Codehighlighter1_157_327_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_157_327_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_157_327_Closed_Text.style.display='none'; Codehighlighter1_157_327_Open_Image.style.display='inline'; Codehighlighter1_157_327_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_157_327_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff">/**/</span><span id=Codehighlighter1_157_327_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;DONT&nbsp;DO&nbsp;THAT<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>otherwise&nbsp;Nullpointer&nbsp;exception&nbsp;will&nbsp;not&nbsp;handled&nbsp;properly<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>}&nbsp;catch&nbsp;(<img src="http://www.cppblog.com/Images/dot.gif">)&nbsp;{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>//&nbsp;this&nbsp;are&nbsp;not&nbsp;ACDK&nbsp;exception<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>//&nbsp;for&nbsp;example&nbsp;std::exception,&nbsp;if&nbsp;you&nbsp;use&nbsp;STL<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>}<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>方法参数缺省传递方式是：<br>a、基本类型(int,float,char,etc)按值传递<br>b、enum按值<br>c、类和接口按引用传递<br>d、数组按引用传递<br><br>参数的in,out,inout<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;foo(IN(RStringBuffer)&nbsp;buffer,&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len)<br><img id=Codehighlighter1_44_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_218_Open_Text.style.display='none'; Codehighlighter1_44_218_Closed_Image.style.display='inline'; Codehighlighter1_44_218_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_44_218_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_218_Closed_Text.style.display='none'; Codehighlighter1_44_218_Open_Image.style.display='inline'; Codehighlighter1_44_218_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_44_218_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_44_218_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">buffer&nbsp;=&nbsp;new&nbsp;StringBuffer();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;caller&nbsp;not&nbsp;be&nbsp;effected,&nbsp;RStringBuffer&nbsp;isn't&nbsp;changed</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;buffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">asdf</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;caller&nbsp;be&nbsp;effected.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;caller&nbsp;not&nbsp;be&nbsp;effected</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;is&nbsp;equivalent&nbsp;to<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">void&nbsp;foo(RStringBuffer&nbsp;buffer,&nbsp;int&nbsp;len);</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;use_foo()<br><img id=Codehighlighter1_299_463_Open_Image onclick="this.style.display='none'; Codehighlighter1_299_463_Open_Text.style.display='none'; Codehighlighter1_299_463_Closed_Image.style.display='inline'; Codehighlighter1_299_463_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_299_463_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_299_463_Closed_Text.style.display='none'; Codehighlighter1_299_463_Open_Image.style.display='inline'; Codehighlighter1_299_463_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_299_463_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_299_463_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sb&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer(</span><span style="COLOR: #000000">""</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sbs&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sb;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;foo(sb,&nbsp;value);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">value&nbsp;==&nbsp;1000&nbsp;&amp;&amp;&nbsp;sb&nbsp;==&nbsp;sbs<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;sb-&gt;toString()&nbsp;==&nbsp;"ACDK"</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top></span><span style="COLOR: #000000">}</span></span></div>
in参数确保对象引用不会变化；可以传递栈对象<br><br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;foo(OUT(RStringBuffer)&nbsp;buffer,&nbsp;OUT(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">)&nbsp;len)<br><img id=Codehighlighter1_50_196_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_196_Open_Text.style.display='none'; Codehighlighter1_50_196_Closed_Image.style.display='inline'; Codehighlighter1_50_196_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_50_196_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_50_196_Closed_Text.style.display='none'; Codehighlighter1_50_196_Open_Image.style.display='inline'; Codehighlighter1_50_196_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_50_196_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_50_196_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;buffer&nbsp;is&nbsp;unitialized&nbsp;here</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;buffer&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer(</span><span style="COLOR: #000000">1024</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;buffer&nbsp;is&nbsp;now&nbsp;initialed;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;buffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">ACDK</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;len&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;buffer</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">length();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>RString&nbsp;use_foo()<br><img id=Codehighlighter1_216_360_Open_Image onclick="this.style.display='none'; Codehighlighter1_216_360_Open_Text.style.display='none'; Codehighlighter1_216_360_Closed_Image.style.display='inline'; Codehighlighter1_216_360_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_216_360_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_216_360_Closed_Text.style.display='none'; Codehighlighter1_216_360_Open_Image.style.display='inline'; Codehighlighter1_216_360_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_216_360_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_216_360_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sb;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;foo(sb,&nbsp;len);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;System::out</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">println(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Buffer&nbsp;is&nbsp;[</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;sb</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">toString()&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">]&nbsp;len&nbsp;=&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;len);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sb</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">toString();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
使用out参数，按照引用传参，可以修改传入参数，但是对于进程间不可以传递栈对象。<br><br>
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39565.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-25 12:24 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/25/39565.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ACDK 的学习之旅--(2)  ACDK中的Object类</title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39540.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Mon, 24 Dec 2007 15:59:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39540.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39540.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39540.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39540.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39540.html</trackback:ping><description><![CDATA[<br>1、传统的C++类<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 由于ACDK也是C++代码，所以在传统C++类中使用ACDK类是没有问题的<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;this&nbsp;is&nbsp;a&nbsp;NON&nbsp;ACDK&nbsp;class</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;AClass<br><img id=Codehighlighter1_41_249_Open_Image onclick="this.style.display='none'; Codehighlighter1_41_249_Open_Text.style.display='none'; Codehighlighter1_41_249_Closed_Image.style.display='inline'; Codehighlighter1_41_249_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_41_249_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_41_249_Closed_Text.style.display='none'; Codehighlighter1_41_249_Open_Image.style.display='inline'; Codehighlighter1_41_249_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_41_249_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_41_249_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_val;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;AClass()&nbsp;:&nbsp;_val(</span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_84_87_Open_Image onclick="this.style.display='none'; Codehighlighter1_84_87_Open_Text.style.display='none'; Codehighlighter1_84_87_Closed_Image.style.display='inline'; Codehighlighter1_84_87_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_84_87_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_87_Closed_Text.style.display='none'; Codehighlighter1_84_87_Open_Image.style.display='inline'; Codehighlighter1_84_87_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_84_87_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_84_87_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;a&nbsp;NON&nbsp;ACDK&nbsp;class&nbsp;can&nbsp;make&nbsp;usage&nbsp;of&nbsp;ACDK&nbsp;classes.</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;get()<br><img id=Codehighlighter1_158_247_Open_Image onclick="this.style.display='none'; Codehighlighter1_158_247_Open_Text.style.display='none'; Codehighlighter1_158_247_Closed_Image.style.display='inline'; Codehighlighter1_158_247_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_158_247_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_158_247_Closed_Text.style.display='none'; Codehighlighter1_158_247_Open_Image.style.display='inline'; Codehighlighter1_158_247_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_158_247_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_158_247_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sb&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sb</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">append(_val);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;sb</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">toString();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<br>2、类型定义<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 为了获得ACDK框架的的一些特性（垃圾回收，应用于集合、反射以及脚本中等），你的类型定义需要满足以下几个条件：<br>&nbsp;&nbsp;&nbsp;&nbsp; a、所有可实例化的类必须直接或者间接派生于acdk::lang::Object<br>&nbsp;&nbsp;&nbsp;&nbsp; b、不运行多重继承自acdk::lang::Object<br>&nbsp;&nbsp;&nbsp;&nbsp; c、接口类是纯虚类<br>&nbsp;&nbsp;&nbsp;&nbsp; d、类可以实现几个接口<br>例如：<br>类定义：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">ACDK_DECL_CLASS(AClass);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;AClass&nbsp;:&nbsp;</span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000">&nbsp;acdk::lang::Object<br><img id=Codehighlighter1_67_139_Open_Image onclick="this.style.display='none'; Codehighlighter1_67_139_Open_Text.style.display='none'; Codehighlighter1_67_139_Closed_Image.style.display='inline'; Codehighlighter1_67_139_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_67_139_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_67_139_Closed_Text.style.display='none'; Codehighlighter1_67_139_Open_Image.style.display='inline'; Codehighlighter1_67_139_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_67_139_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_67_139_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;_val;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;AClass(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;number)&nbsp;:&nbsp;Object(),&nbsp;_val(number)<br><img id=Codehighlighter1_134_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_134_137_Open_Text.style.display='none'; Codehighlighter1_134_137_Closed_Image.style.display='inline'; Codehighlighter1_134_137_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_134_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_134_137_Closed_Text.style.display='none'; Codehighlighter1_134_137_Open_Image.style.display='inline'; Codehighlighter1_134_137_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_134_137_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_134_137_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>RAClass&nbsp;aclass&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;AClass(</span><span style="COLOR: #000000">42</span><span style="COLOR: #000000">);</span></div>
<br>接口定义：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">ACDK_DECL_INTERFACE(AInterface);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;AInterface&nbsp;ACDK_INTERFACEBASE<br><img id=Codehighlighter1_69_120_Open_Image onclick="this.style.display='none'; Codehighlighter1_69_120_Open_Text.style.display='none'; Codehighlighter1_69_120_Closed_Image.style.display='inline'; Codehighlighter1_69_120_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_69_120_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_69_120_Closed_Text.style.display='none'; Codehighlighter1_69_120_Open_Image.style.display='inline'; Codehighlighter1_69_120_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_69_120_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_69_120_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;virtual&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;doIt(IN(RString)&nbsp;arg)&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;</span></div>
<br>当然，为了利用ACDK对象模型的元特性（象序列化、垃圾回收，脚本调用），必须在类中添加元信息（Metainfo）。
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39540.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-24 23:59 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/24/39540.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开始 ACDK 的学习之旅--(1)</title><link>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39516.html</link><dc:creator>万连文</dc:creator><author>万连文</author><pubDate>Mon, 24 Dec 2007 09:41:00 GMT</pubDate><guid>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39516.html</guid><wfw:comment>http://www.cppblog.com/wlwlxj/comments/39516.html</wfw:comment><comments>http://www.cppblog.com/wlwlxj/archive/2007/12/24/39516.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/wlwlxj/comments/commentRss/39516.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/wlwlxj/services/trackbacks/39516.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 对于写程序我似乎有一些洁僻，看不惯杂乱无章的代码。有时候想不明白，为什么连一个字符串都有那么多版本，而且一直都被面试者所追捧。再看看老美们在作些什么，自己真是汗颜！<br>&nbsp;&nbsp;&nbsp; 非常喜欢java的代码风格以及结构，网上搜索了一下，发现了acdk这个开源库，下载来一看确实不错。它是个采用C++写的符合Java使用习惯的一套平台独立的分布式程序开放框架，从底层lang io local到net、security再到xml以及所有脚本语言的支持以及com javabean corba等，对GUI略有支持。看上去非常不错，打算学习一段时间之后，希望能把自己的一些积累的技术融入进来。<br><br>&nbsp;&nbsp;&nbsp;
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">acdk.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">acdk</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">lang</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">System.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#pragma&nbsp;warning<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">static&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;acdkmain(RStringArray&nbsp;args)<br><img id=Codehighlighter1_107_161_Open_Image onclick="this.style.display='none'; Codehighlighter1_107_161_Open_Text.style.display='none'; Codehighlighter1_107_161_Closed_Image.style.display='inline'; Codehighlighter1_107_161_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_107_161_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_107_161_Closed_Text.style.display='none'; Codehighlighter1_107_161_Open_Image.style.display='inline'; Codehighlighter1_107_161_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_107_161_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_107_161_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">try</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_115_118_Open_Image onclick="this.style.display='none'; Codehighlighter1_115_118_Open_Text.style.display='none'; Codehighlighter1_115_118_Closed_Image.style.display='inline'; Codehighlighter1_115_118_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_115_118_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_115_118_Closed_Text.style.display='none'; Codehighlighter1_115_118_Open_Image.style.display='inline'; Codehighlighter1_115_118_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_115_118_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_115_118_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">catch</span><span style="COLOR: #000000">(RThrowable&nbsp;ex)<br><img id=Codehighlighter1_143_146_Open_Image onclick="this.style.display='none'; Codehighlighter1_143_146_Open_Text.style.display='none'; Codehighlighter1_143_146_Closed_Image.style.display='inline'; Codehighlighter1_143_146_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_143_146_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_143_146_Closed_Text.style.display='none'; Codehighlighter1_143_146_Open_Image.style.display='inline'; Codehighlighter1_143_146_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_143_146_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_143_146_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[],&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">&nbsp;envptr)<br><img id=Codehighlighter1_215_281_Open_Image onclick="this.style.display='none'; Codehighlighter1_215_281_Open_Text.style.display='none'; Codehighlighter1_215_281_Closed_Image.style.display='inline'; Codehighlighter1_215_281_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_215_281_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_215_281_Closed_Text.style.display='none'; Codehighlighter1_215_281_Open_Image.style.display='inline'; Codehighlighter1_215_281_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_215_281_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_215_281_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;acdk::lang::System::main(acdkmain,&nbsp;argc,&nbsp;argv,&nbsp;envptr);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>下班了，没时间写了，晕。第一个，看不出太大区别。 <br><br><br>Go on......&nbsp; 当然任何技术提供服务的同时，你必须遵守它的一些玩法。下面是一些初步尝试，走马观花过一些基本概念，看看最基本的特性。<br><br>创建对象：<br>RStringBuffer sb = new StringBuffer();<br>acdk实现了基于引用技术的自动内存管理方式，当然你得按照它的规则来玩：即使用R类的引用对象把原生的对象指针Hold住，看起来还算舒服。当然调用方法你就得使用指针来操作（符合C++习惯）：<br>sb-&gt;append("Hi");<br><br>调用静态方法：<br>RString str = String::valueOf(3.4);<br><br>对象的引用技术为0的时候，会自动销毁。通常是计数对象出作用域或者赋值Nil的时候，可以销毁对象。<br><br>很自然的，R系列的对象都符合引用原则，即赋值的时候，仅仅改变内部原始_ptr指针以及引用计数：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">RStringBuffer&nbsp;sb1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;StringBuffer(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RStringBuffer&nbsp;sb2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sb1;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;sb2&nbsp;contains&nbsp;the&nbsp;same&nbsp;StringBuffer&nbsp;instance</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;sb2</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">C</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;sb1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">append(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">DK</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;StringBuffer&nbsp;now&nbsp;contains&nbsp;"ACDK"</span></div>
<br>假如想拷贝一份内部对象，可以这样：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">RStringBuffer&nbsp;sb2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;sb1</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">clone()</span></div>
<br>一般情况下，方法的参数以及返回值类型使用引用类型，即R类：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">RInteger&nbsp;myParse(RStringBuffer&nbsp;arg)<br><img id=Codehighlighter1_36_136_Open_Image onclick="this.style.display='none'; Codehighlighter1_36_136_Open_Text.style.display='none'; Codehighlighter1_36_136_Closed_Image.style.display='inline'; Codehighlighter1_36_136_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_36_136_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_36_136_Closed_Text.style.display='none'; Codehighlighter1_36_136_Open_Image.style.display='inline'; Codehighlighter1_36_136_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_36_136_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_36_136_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RString&nbsp;str&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;arg</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">toString();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;RInteger&nbsp;erg&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Integer(Integer::parseInt(str));<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;erg;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>
<img src ="http://www.cppblog.com/wlwlxj/aggbug/39516.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/wlwlxj/" target="_blank">万连文</a> 2007-12-24 17:41 <a href="http://www.cppblog.com/wlwlxj/archive/2007/12/24/39516.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>