• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            萬(wàn)星星@豌豆莢 歡迎加入我們
            一個(gè)吃軟飯的男人!!!!!我只想寫(xiě)程序####
            微博:http://weibo.com/wanlianwen
            posts - 172,  comments - 1253,  trackbacks - 0

            ACDK基于C++的模型(基本類型、接口、對(duì)象類,數(shù)組,異常,枚舉和命名空間)組織了自己的類型模型。

            1、基本模型
                  基本類型         Object對(duì)象封裝            位數(shù)(bit)
                  bool                  Boolean                           8
                  char                  Character                        8
                  uc2char            UnicodeCharacter            16
                  uc4char            UnicodeCharacter            23
                  byte                  Byte                                8
                  short                 Short                              16
                  int                     Integer                            32  
                  jlong                 Long                               64
                  float                  Float                               32
                  double              Double                            64


            2、Enum類型
                  使用C++的enum,假如需要考慮ACDK的元編譯,需要使用宏:ACDK_DECL_ENUM,用來(lái)提供元信息。動(dòng)態(tài)庫(kù)需要導(dǎo)出類型的時(shí)候,使用ACDK_DEF_LIB_ENUM。不牽扯到元信息的Enum類型可以在定義的時(shí)候使用foreign關(guān)鍵字。

            3、對(duì)象類型
                  必須直接或者間接從Object派生
            // declare the R-type RLegalAcdkClass
            // and the Array type LegalAcdkClassArray and RLegalAcdkClassArray
            ACDK_DECL_CLASS(LegalAcdkClass);
            // The class itself:
            class LegalAcdkClass : extends acdk::lang::Object    // extend the Object class
            {
                ACDK_WITH_METAINFO(LegalAcdkClass);        
            // optional, for class information see Metainfo
            private:
                RString message;
            public:
                
            // constructor
                LegalAcdkClass() : Object() , message("")
                
            {
                }

                
            // a method
                RString getMessage()
                
            {
                    
            return message;
                }

            }
            ;

                  不能多繼承類,但是可以提供一種更好的辦法就是多繼承接口。

            // declare the R-type RLegalAcdkClass
            // and the Array type LegalAcdkClassArray and RLegalAcdkClassArray
            ACDK_DECL_CLASS(LegalAcdkClass);
            // The class itself:
            class LegalAcdkClass : extends acdk::lang::Object // extend the Object class
            implements acdk::lang::Comparable // implements the interface
            {
                ACDK_WITH_METAINFO(LegalAcdkClass) 
            // optional, for class information see Metainfo
            private:
                RString message;
            public:
                
            // implement the Comparable interface method
                int compareTo(IN(RObject) other)
                
            {
                    
            return getMessage()->compareTo(RLegalAcdkClass(other)->getMessage());
                }

                RString getMessage() 
            return message; }
            }
            ;

                 Class信息

            RStringBuffer sb1 = new StringBuffer("ACDK");
                    RStringBuffer sb2 
            = new StringBuffer("JAVA");
                    RClass cls1 
            = sb1->getClass();
                    RClass cls2 
            = sb2->getClass();
                    
            assert(cls1 == cls2); // always true

                你可以定義不符合acdk規(guī)范的類型已經(jīng)結(jié)構(gòu)等,但是會(huì)失去acdk提供的一些特性。


            ACDK的異常捕獲需要注意:
            void foo()
            {
            try {
            }
             catch (acdk::io::RIOException ex) {
            // handle here type of IOException.
            }
             catch (RThrowable ex) {
            // handle all other ACDK exceptions
            }

            /* DONT DO THAT
            otherwise Nullpointer exception will not handled properly
            } catch () {
            // this are not ACDK exception
            // for example std::exception, if you use STL
            }
            */

            }


            方法參數(shù)缺省傳遞方式是:
            a、基本類型(int,float,char,etc)按值傳遞
            b、enum按值
            c、類和接口按引用傳遞
            d、數(shù)組按引用傳遞

            參數(shù)的in,out,inout
            void foo(IN(RStringBuffer) buffer, int len)
            {
                
            //buffer = new StringBuffer(); // caller not be effected, RStringBuffer isn't changed
                buffer->append("asdf"); // caller be effected.
                len = 42// caller not be effected
            }


            // is equivalent to
            //void foo(RStringBuffer buffer, int len);
            void use_foo()
            {
                RStringBuffer sb 
            = new StringBuffer("");
                RStringBuffer sbs 
            = sb;
                
            int value = 1000;
                foo(sb, value);
                
            //value == 1000 && sb == sbs
                
            // sb->toString() == "ACDK"
            }
            in參數(shù)確保對(duì)象引用不會(huì)變化;可以傳遞棧對(duì)象

            void foo(OUT(RStringBuffer) buffer, OUT(int) len)
            {
                
            // buffer is unitialized here
                buffer = new StringBuffer(1024);
                
            // buffer is now initialed;
                buffer->append("ACDK");
                len 
            = buffer->length();
            }

            RString use_foo()
            {
                RStringBuffer sb;
                
            int len;
                foo(sb, len);
                System::out
            ->println("Buffer is [" + sb->toString() + "] len = " + len);
                
            return sb->toString();
            }
            使用out參數(shù),按照引用傳參,可以修改傳入?yún)?shù),但是對(duì)于進(jìn)程間不可以傳遞棧對(duì)象。

            posted on 2007-12-25 12:24 萬(wàn)連文 閱讀(914) 評(píng)論(0)  編輯 收藏 引用 所屬分類: ACDK
            簡(jiǎn)歷下載
            聯(lián)系我

            <2007年5月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            常用鏈接

            留言簿(66)

            隨筆分類

            隨筆檔案

            相冊(cè)

            搜索

            •  

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            7777久久久国产精品消防器材| 久久精品一区二区国产| 亚洲欧洲久久久精品| 亚洲中文久久精品无码| 国产精品视频久久久| 久久精品国产色蜜蜜麻豆| 久久亚洲国产最新网站| 久久不射电影网| 欧美日韩精品久久免费| AV无码久久久久不卡网站下载 | 久久精品午夜一区二区福利| 国产亚洲婷婷香蕉久久精品| 亚洲国产日韩欧美久久| 亚洲伊人久久大香线蕉苏妲己| 久久久国产精华液| 国产99久久久久久免费看| 亚洲AV日韩AV永久无码久久| 久久精品无码一区二区三区免费| 久久久久久久97| 久久精品国产只有精品66| 久久婷婷五月综合色奶水99啪| 久久精品国产只有精品66| 久久精品免费观看| 久久夜色精品国产网站| 77777亚洲午夜久久多喷| 亚洲人成网站999久久久综合| 亚洲欧美精品伊人久久| 99久久无色码中文字幕| 囯产精品久久久久久久久蜜桃| 久久久久国色AV免费观看| 91精品日韩人妻无码久久不卡| 粉嫩小泬无遮挡久久久久久| 77777亚洲午夜久久多喷| 欧美伊人久久大香线蕉综合 | 久久丫精品国产亚洲av| 久久久国产精华液| 伊人久久大香线蕉AV色婷婷色| 欧美精品国产综合久久| 日本精品久久久久久久久免费| 伊人久久成人成综合网222| 久久久久九九精品影院|