• <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>

            天下

            記錄修行的印記

            c++嵌套類

            #include "stdafx.h"

            /*
            c++嵌套類
            可以在另一個類內(nèi)部定義一個類,這樣的類嵌套類(nested class)
            嵌套類是獨立的類,基本上與它們外圍類不相關,因此,外圍類和嵌套類的對象是互相獨立的。
            嵌套類型的對象不具備外圍類所定義的成員,同樣,外圍類的成員也不具備嵌套類所定義的成員。

            在一個類的內(nèi)部定義另一個類,我們稱之為嵌套類(nested class),或者嵌套類型。之所以引入這樣一個嵌套類,往往是因為外圍類需要使用嵌套類對象作為底層實現(xiàn),并且該嵌套類只用于外圍類的實現(xiàn),且同時可以對用戶隱藏該底層實現(xiàn)。

            雖然嵌套類在外圍類內(nèi)部定義,但它是一個獨立的類,基本上與外圍類不相關。它的成員不屬于外圍類,同樣,外圍類的成員也不屬于該嵌套類。嵌套類的出現(xiàn)只是告訴外圍類有一個這樣的類型成員供外圍類使用。并且,外圍類對嵌套類成員的訪問沒有任何特權,嵌套類對外圍類成員的訪問也同樣如此,它們都遵循普通類所具有的標號訪問控制。

            若不在嵌套類內(nèi)部定義其成員,則其定義只能寫到與外圍類相同的作用域中,且要用外圍類進行限定,不能把定義寫在外圍類中。例如,嵌套類的靜態(tài)成員就是這樣的一個例子。

            前面說過,之所以使用嵌套類的另一個原因是達到底層實現(xiàn)隱藏的目的。為了實現(xiàn)這種目的,我們需要在另一個頭文件中定義該嵌套類,而只在外圍類中前向聲明這個嵌套類即可。當然,在外圍類外面定義這個嵌套類時,應該使用外圍類進行限定。使用時,只需要在外圍類的實現(xiàn)文件中包含這個頭文件即可。


            另外,嵌套類可以直接引用外圍類的靜態(tài)成員、類型名和枚舉成員(假定這些成員是公有的)。類型名是一個typedef名字、枚舉類型名、或是一個類名。

            在嵌套類的定義被看到之前我們只能聲明嵌套類的指針和引用,如上面在A中定義為B m_b而不是B* m_b將會引發(fā)一個編譯錯誤。
            關于C++嵌套類的詳細用法請參考《C++ Primer 第三版》P551。    
            */

                
            //outerB.h
            //外圍類outerB
            class outerB
            {
            public:
                outerB();
                ~outerB();
                void show();

                //嵌套類 innerA
                class innerA
                {
                public:
                    innerA();
                    ~innerA();
                    void _show();
                };
            private:
                innerA*  m_p_innerA;
            };



            //outerB.cpp
            outerB::outerB():m_p_innerA(new innerA)
            {
                printf("%s \r\n",__FUNCTION__);
            }

            outerB::~outerB()
            {
                printf("%s \r\n",__FUNCTION__);
                if (m_p_innerA!=NULL)
                {
                    delete m_p_innerA;
                }
            }


            void outerB::show()
            {
                m_p_innerA->_show();
                printf("%s \r\n",__FUNCTION__);
            }
            outerB::innerA::innerA()
            {
                printf("%s \r\n",__FUNCTION__);
            }
            outerB::innerA::~innerA()
            {
                printf("%s \r\n",__FUNCTION__);
            }


            void outerB::innerA::_show()
            {
                printf("%s \r\n",__FUNCTION__);
            }

            int _tmain(int argc, _TCHAR* argv[])
            {
                outerB x;
                x.show();
                return 0;
            }

            //輸出
            /*

            outerB::innerA::innerA
            outerB::outerB
            outerB::innerA::_show
            outerB::show
            outerB::~outerB
            outerB::innerA::~innerA
            */

            posted on 2013-04-22 15:05 天下 閱讀(3939) 評論(0)  編輯 收藏 引用 所屬分類: C/C++

            <2012年2月>
            2930311234
            567891011
            12131415161718
            19202122232425
            26272829123
            45678910

            導航

            統(tǒng)計

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評論

            国产精品久久久99| 精品国产青草久久久久福利| 久久国产精品一国产精品金尊| 77777亚洲午夜久久多人| 亚洲中文久久精品无码| 久久精品a亚洲国产v高清不卡| 国产成人久久AV免费| 久久九九免费高清视频| 久久精品无码一区二区WWW| 亚洲va中文字幕无码久久| 国产精品久久久亚洲| 国产精品成人精品久久久| 亚洲国产天堂久久久久久| 久久久无码精品亚洲日韩蜜臀浪潮| 久久ZYZ资源站无码中文动漫| 亚洲综合婷婷久久| 久久国语露脸国产精品电影| 99久久精品国产高清一区二区| 久久国产视频99电影| 无码精品久久久天天影视 | 四虎影视久久久免费观看| 久久99热这里只有精品66| 国产精品久久久久影视不卡| 中文国产成人精品久久亚洲精品AⅤ无码精品| 一本色综合网久久| 久久久久亚洲精品中文字幕| 人妻无码αv中文字幕久久| 精品多毛少妇人妻AV免费久久| 久久精品国产亚洲AV高清热| 热综合一本伊人久久精品 | 99久久这里只有精品| 日韩十八禁一区二区久久| 国产成人精品久久综合| 久久99精品久久久久久动态图 | 久久精品天天中文字幕人妻| 99久久精品无码一区二区毛片| 精品久久久久久无码中文野结衣| 亚洲中文字幕久久精品无码APP| 99久久99久久久精品齐齐| 亚洲中文字幕无码久久精品1| 久久不射电影网|