嵌套類

在一個類體中定義的類叫作嵌套類。擁有嵌套類的類叫外圍類。

基本介紹

  • 中文名:嵌套類
  • 外文名:Nested Class
  • 學科:計算機科學與技術
  • 所屬類別:C++編程
定義,作用,使用示例,關係,相關說明,

定義

在一個類體中定義的類叫作嵌套類。擁有嵌套類的類叫外圍類。

作用

定義嵌套類的初衷是建立僅供某各類使用的類,目的在於隱藏類名,減少全局的標識符,從而限制用戶能否使用該類建立對象。這樣可以提高類的抽象能力,並且強調了兩個類(外圍類和嵌套類)之間的主從關係。

使用示例

#include <iostream>using namespace std; class A{public:    class B    {    public:        B(char* name){            cout<<"constructing B:"<<name<<endl;        }        void printB();    };    B b;    A():b("In class A"){        cout<<"constructing A"<<endl;    }}; void A::B::printB(){    cout<<"B's member function"<<endl;} int main(int argc,char* argv[]){    A a;    A::B b("outside of A");    b.printB();}
程式輸出結果:
constructing B:In class A
constructing A
constructing B:outside of A
B's member function

關係

2.1 嵌套類對於外圍類:
  1. 嵌套類僅僅是聲明在外圍類內部的類型,而不是外圍類的成員
  2. 外圍類不具備嵌套類所定義的成員
  3. 對於外圍類來說,嵌套類和其他的類沒有任何區別;外圍類能訪問嵌套類對象的public成員,不能訪問嵌套類對象的protected及private成員
2.2 外圍類對於嵌套類:
  1. 嵌套類不具備外圍類所定義的成員
  2. 嵌套類能訪問外圍類的public成員,不能訪問外圍類的protected及private成員
2.3 嵌套類對於外圍類外部的作用域:
  1. 無論嵌套類聲明為public、protected還是private,嵌套類對於外圍類任何成員可見
  2. 當嵌套類在外圍類中聲明為public時,對外圍類之外的作用域可見,外圍類之外的作用域可通過“::”訪問嵌套類;

相關說明

(1)類的私有成員只有類的成員和友元可以訪問,因此外圍類不可以訪問嵌套類的私有成員。嵌套類可以訪問外圍類的成員(通過對象、指針或者引用)。
(2)嵌套類既可為私有,也可為公有。在上面的例子中,嵌套類B的訪問許可權是public,可以在外圍類的成員函式之外使用該嵌套類,使用時加上名字限定。如果將嵌套類B的訪問許可權設定為private,那么只能在外圍類內使用。
(3)嵌套類中的成員函式可以在它的類體外定義。
(4)嵌套類可以直接訪問外圍類的靜態成員、類型名( typedef )、枚舉值。
以嵌套類對外圍類的靜態成員變數的訪問為例,訪問方式通過”ClassName::staticVarName”來直接訪問。

相關詞條

熱門詞條

聯絡我們