<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    C++ 嵌套類使用(三)

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    如果嵌套類型和其外部類型之間的關系需要成員可訪問性語義,需要使用C++嵌套類,嵌套類型不應針對其聲明類型以外的類型執行任務,而C++局部類允許類、結構和接口被分成多個小塊兒并存儲在不同的源文件中,這樣的實現很容易開發和維護。

    C++局部類:

    在一個函數體內定義的類稱為局部類。局部類中只能使用它的外圍作用域中的對象和函數進行聯系,因為外圍作用域中的變量與該局部類的對象無關(#add,這半句是什么屁話?)。局部類不能被外部所繼承。在定義局部類時需要注意:局部類中不能說明靜態成員函數,并且所有成員函數都必須定義在類體內(#add,因為除此之外沒有別的地方可以寫定義體)。在實踐中,局部類是很少使用的。下面是一個局部類的例子。

      int a;

     

    void fun() 

     { 

    static int s; 

    class A 

     { 

    public: 

    void init(int i)  { s = i; } 

    }; 

    A m; 

    m.init(10); 

     

     

    局部類的另一個用途是用來實現類型轉化,如下代碼:

     

    class Interface 

    public: 

       virtual void Fun() = 0;   

    }; 

     

    template

    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); 

    }

     

    C++嵌套類:

    在一個類中定義的類稱為C++嵌套類,定義嵌套類的類稱為外圍類。定義嵌套類的目的在于隱藏類名,減少全局的標識符,從而限制用戶能否使用該類建立對象。這樣可以提高類的抽象能力,并且強調了兩個類(外圍類和嵌套類)之間的主從關系。下面是一個嵌套類的例子:

      class A 

     { 

     public: 

    class B 

     { 

    public: 

    … 

    private: 

    … 

    }; 

    void f(); 

    private: 

    int a; 

    };

     

    對嵌套類的若干說明:

    1、從作用域的角度看,嵌套類被隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類的作用域內使用該類名時(#add 也就是外圍類的外部),需要加名字限定。

    2、從訪問權限的角度來看,嵌套類名與它的外圍類的對象成員名具有相同的訪問權限規則。不能訪問嵌套類的對象中的私有成員函數,也不能對外圍類的私有部分中的嵌套類建立對象。

    3、C++嵌套類中的成員函數可以在它的類體外定義。

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

    class A 

    public: 

    void f(); 

    private: 

    int a; 

    }; 

     

    class B 

    public: 

    … 

    private: 

    … 

    };

     #add 嵌套類可以訪問外圍類的static數據,即使為private

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

    5、在C++嵌套類中說明的友元對外圍類的成員沒有訪問權。

    6、如果嵌套類比較復雜,可以只在外圍類中對嵌套類進行說明,關于嵌套的詳細的內容可在外圍類體外的文件域中進行定義。

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全