• <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>
            posts - 183,  comments - 10,  trackbacks - 0

            《深度探索 C++ 對(duì)象模型》讀書筆記——第一章 關(guān)于對(duì)象

            C++ 對(duì)象模型
            ·語(yǔ)言中直接支持面向?qū)ο蟪绦蛟O(shè)計(jì)的部分
            ·對(duì)于各種支持的底層實(shí)現(xiàn)機(jī)制

            virtual table

            理解底層實(shí)現(xiàn)模型的好處有
            ·寫出效率較高的代碼
            ·有更好的自信心


            關(guān)于對(duì)象
            布局、存取時(shí)間來(lái)自于
            ·virtual: virtual function, virtual base class
            ·derived class 與 base class 的轉(zhuǎn)換

            class data members: static, nonstatic
            class member functions: static, nonstatic, virtual

            1.簡(jiǎn)單對(duì)象模型 Simple Object Model
            slots
            指向成員的指針

            2.表格驅(qū)動(dòng)對(duì)象模型
            data member table
            member function table: slots

            Member Table 對(duì)象模型

            支持 virtual functions

            3.C++ 對(duì)象模型
            virtual table (vtbl)
            vptr: constructor, destructor, copy assignment

            type_info object for RTTI(運(yùn)行時(shí)類型識(shí)別)

            優(yōu)點(diǎn):空間和存取時(shí)間的效率
            缺點(diǎn):會(huì)導(dǎo)致重新編譯

            bptr

            (*px->vtbl[2])(px);
            (*px->vtbl[1])(px);
            _delete(px);

            vptr
            virtual table
            -----
            address -> type_info for X
            address -> X::~X()
            address -> X::foo()
            -----

            pt->vtbl[0]
            pt->vtbl[1]
            pt->vtbl[2]

            關(guān)鍵字所帶來(lái)的差異
            組合而非繼承是把 C 和 C++ 結(jié)合在一起的唯一可行方法
            conversion 運(yùn)算符
            operator C_point()
            {
             return _c_point;
            }

            對(duì)象的差異
            C++ 程序設(shè)計(jì)模型直接支持三種程序設(shè)計(jì)典范 programming paradigms
            ·程序模型 procedural model
            ·抽象數(shù)據(jù)類型模型 abstract data type model
            ·面向?qū)ο竽P?object-oriented model

            C++ 支持多態(tài)的方法
            ·隱含轉(zhuǎn)化 Shape* ps = new circle();
            ·virtual function ps->rotate();
            ·dynamic_cast, typeid
             if (Circle* pc = dynamic_cast<Circle*>(ps))
             {
             ...
             }

            class object 內(nèi)存
            ·nonstatic data members
            ·alignment
            ·virutal(virtual functions, virtual base class)

            dynamic_cast<Base*>

            OB: object-based
            OO: object-oriented

            posted on 2011-05-25 18:48 unixfy 閱讀(141) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久精品免费一区二区三区| 欧美丰满熟妇BBB久久久| 国产产无码乱码精品久久鸭| 日产精品久久久久久久| 色8激情欧美成人久久综合电| 777久久精品一区二区三区无码| 久久发布国产伦子伦精品| 久久婷婷五月综合97色一本一本| 欧洲人妻丰满av无码久久不卡| 久久人妻少妇嫩草AV蜜桃| 狠狠色丁香婷婷久久综合| 国内精品人妻无码久久久影院导航| 久久综合九色综合网站| 亚洲综合伊人久久大杳蕉| 久久精品国产清高在天天线| 久久97精品久久久久久久不卡| 国产精品毛片久久久久久久| 亚洲国产精久久久久久久| 久久久久久久综合日本| 亚洲va久久久久| 久久99国产综合精品免费| 成人精品一区二区久久久| 天天影视色香欲综合久久| 亚洲日韩中文无码久久| 麻豆精品久久精品色综合| 久久影视综合亚洲| 久久国产亚洲精品无码| 久久av免费天堂小草播放| 7777久久久国产精品消防器材| 99久久精品午夜一区二区| 久久久久亚洲精品无码网址| 乱亲女H秽乱长久久久| 久久国产精品波多野结衣AV| 国产成人精品三上悠亚久久| 免费观看成人久久网免费观看| 亚洲精品无码久久毛片| 国产精品久久国产精麻豆99网站 | 91精品国产91久久久久久蜜臀| 久久精品国产福利国产琪琪| 久久久久高潮毛片免费全部播放| 国产精品久久久久乳精品爆|