日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
介紹C++局部類和C++嵌套類之間的區(qū)別

如果嵌套類型和其外部類型之間的關(guān)系需要成員可訪問性語義,需要使用C++嵌套類,嵌套類型不應(yīng)針對其聲明類型以外的類型執(zhí)行任務(wù),而C++局部類允許類、結(jié)構(gòu)和接口被分成多個小塊兒并存儲在不同的源文件中,這樣的實現(xiàn)很容易開發(fā)和維護(hù)。

C++局部類
在一個函數(shù)體內(nèi)定義的類稱為局部類。局部類中只能使用它的外圍作用域中的對象和函數(shù)進(jìn)行聯(lián)系,因為外圍作用域中的變量與該局部類的對象無關(guān)。局部類不能被外部所繼承。在定義局部類時需要注意:局部類中不能說明靜態(tài)成員函數(shù),并且所有成員函數(shù)都必須定義在類體內(nèi)。在實踐中,局部類是很少使用的。下面是一個局部類的例子。

 
 
 
  1.  int a;
  2.   void fun()
  3.    {
  4.   static int s;
  5.   class A
  6.    {
  7.     public:
  8.     void init(int i)  { s = i; }
  9.   };
  10.   A m;
  11.   m.init(10);
  12.   }
  13. 局部類的另一個用途是用來實現(xiàn)類型轉(zhuǎn)化,如下代碼:
  14. class Interface
  15. {
  16. public:
  17.    virtual void Fun() = 0;  
  18. };
  19. template  T, class P>
  20. Interface* MakeAdapter(const T& obj, const P& arg)
  21. {
  22.     int x;
  23.    class Local : public Interface
  24.     {
  25.    public:
  26.       Local(const T& obj, const P& arg)
  27.          : obj_(obj), arg_(arg)  {}
  28.       virtual void Fun()
  29.        {
  30.           x = 100;
  31.          obj_.Call(arg_);
  32.       }
  33.    private:
  34.       T obj_;
  35.       P arg_;
  36.    };
  37.    return new Local(obj, arg);
  38. }

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

 
 
 
  1.  class A
  2.    {
  3.    public:
  4.     class B
  5.      {
  6.     public:
  7.       …
  8.     private:
  9.       …
  10.     };
  11.     void f();
  12.     private:
  13.     int a;
  14.   }

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

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

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

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

 
 
 
  1. class A
  2.   {
  3.   public:
  4.     void f();
  5.   private:
  6.     int a;
  7.   };
  8.   class B
  9.   {
  10.     public:
  11.     …
  12.   private:
  13.     …
  14.   };

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

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

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


網(wǎng)站欄目:介紹C++局部類和C++嵌套類之間的區(qū)別
當(dāng)前URL:http://www.dlmjj.cn/article/cojjscg.html