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

            woaidongmao

            文章均收錄自他人博客,但不喜標(biāo)題前加-[轉(zhuǎn)貼],因其丑陋,見諒!~
            隨筆 - 1469, 文章 - 0, 評(píng)論 - 661, 引用 - 0
            數(shù)據(jù)加載中……

            C++局部類和嵌套類的區(qū)別

             局部類

              在一個(gè)函數(shù)體內(nèi)定義的類稱為局部類。局部類中只能使用它的外圍作用域中的對(duì)象和函數(shù)進(jìn)行聯(lián)系,因?yàn)橥鈬饔糜蛑械淖兞颗c該局部類的對(duì)象無關(guān)。局部類不能被外部所繼承。在定義局部類時(shí)需要注意:局部類中不能說明靜態(tài)成員函數(shù),并且所有成員函數(shù)都必須定義在類體內(nèi)。在實(shí)踐中,局部類是很少使用的。下面是一個(gè)局部類的例子。
              int a;
              
            void fun()
              
            {
              
            static int s;
              
            class A
              
            {
                
            public:
                
            void init(int i) { s = i; }
              }
            ;
              A m;
              m.init(
            10);
              }


            局部類的另一個(gè)用途是用來實(shí)現(xiàn)類型轉(zhuǎn)化,如下代碼:

            class Interface
            {
            public:
              
            virtual void Fun() = 0
            }
            ;

            template
            <class T, class P>
            Interface
            * MakeAdapter(const T& obj, const P& arg)
            {
               
            int x;
              
            class Local : public Interface
              
            {
              
            public:
                  Local(
            const T& obj, const P& arg)
                     : obj_(obj), arg_(arg)
            {}
                 
            virtual void Fun()
                 
            {
                      x
            = 100;
                     obj_.Call(arg_);
                  }

              
            private:
                  T obj_;
                  P arg_;
               }
            ;
              
            return new Local(obj, arg);
            }


              嵌套類

              在一個(gè)類中定義的類稱為嵌套類,定義嵌套類的類稱為外圍類。

              定義嵌套類的目的在于隱藏類名,減少全局的標(biāo)識(shí)符,從而限制用戶能否使用該類建立對(duì)象。這樣可以提高類的抽象能力,并且強(qiáng)調(diào)了兩個(gè)類(外圍類和嵌套類)之間的主從關(guān)系。下面是一個(gè)嵌套類的例子:

             class A
              
            {
             
            public:
                
            class B
                
            {
                
            public:
                  …
                
            private:
                  …
                }
            ;
                
            void f();
                
            private:
                
            int a;
              }




               其中,類B是一個(gè)嵌套類,類A是外圍類,類B定義在類A的類體內(nèi)。

              對(duì)嵌套類的若干說明:

              1、從作用域的角度看,嵌套類被隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類的作用域內(nèi)使用該類名時(shí),需要加名字限定。

              2、從訪問權(quán)限的角度來看,嵌套類名與它的外圍類的對(duì)象成員名具有相同的訪問權(quán)限規(guī)則。不能訪問嵌套類的對(duì)象中的私有成員函數(shù),也不能對(duì)外圍類的私有部分中的嵌套類建立對(duì)象。

              3、嵌套類中的成員函數(shù)可以在它的類體外定義。

              4、嵌套類中說明的成員不是外圍類中對(duì)象的成員,反之亦然。嵌套類的成員函數(shù)對(duì)外圍類的成員沒有訪問權(quán),反之亦然。國此,在分析嵌套類與外圍類的成員訪問關(guān)系時(shí),往往把嵌套類看作非嵌套類來處理。這樣,上述的嵌套類可寫成如下格式:

              class A
              {
              public:
                void f();
              private:
                int a;
              };

                class B
              {
                public:
                …
              private:
                …
              };

              由引可見,嵌套類僅僅是語法上的嵌入。

              5、在嵌套類中說明的友元對(duì)外圍類的成員沒有訪問權(quán)。

              6、如果嵌套類比較復(fù)雜,可以只在外圍類中對(duì)嵌套類進(jìn)行說明,關(guān)于嵌套的詳細(xì)的內(nèi)容可在外圍類體外的文件域中進(jìn)行定義。


            參考:C++編程思想和網(wǎng)絡(luò)文章。

            posted on 2008-09-14 18:05 肥仔 閱讀(317) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++ 基礎(chǔ)

            久久青青草原精品国产软件 | 久久精品亚洲一区二区三区浴池 | 色婷婷久久综合中文久久蜜桃av| 性做久久久久久久久老女人| 久久精品国产久精国产果冻传媒| 久久久久久久人妻无码中文字幕爆| 精品少妇人妻av无码久久| 国产精品久久久久久搜索| 94久久国产乱子伦精品免费| 久久亚洲AV无码西西人体| 欧美日韩精品久久免费| www久久久天天com| 色综合久久天天综线观看| 久久久久亚洲AV无码麻豆| 久久电影网| 久久精品亚洲中文字幕无码麻豆| 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 国产亚洲精久久久久久无码77777| 久久久久久人妻无码| 亚洲国产成人久久综合碰| 国产精品美女久久久久网| 伊人久久大香线蕉无码麻豆 | 三级韩国一区久久二区综合 | 午夜精品久久久久| 国产精品一区二区久久精品| 日本精品久久久久影院日本| 国产亚洲欧美成人久久片| 久久香综合精品久久伊人| 久久婷婷色香五月综合激情| 99久久精品国产一区二区三区| 亚洲AV无码久久精品蜜桃| 久久久久亚洲?V成人无码| 91秦先生久久久久久久| 97精品伊人久久久大香线蕉| 久久国产亚洲精品无码| 人妻久久久一区二区三区| 国产精品久久久久蜜芽| 亚洲欧美久久久久9999 | 午夜精品久久久久久99热| 亚洲午夜精品久久久久久app| 久久久WWW免费人成精品|