C++巢狀類與內部類
阿新 • • 發佈:2018-12-26
————————————————–先從定義上來區分————————————————–
巢狀類
所謂巢狀類就是可以在一個類中定義另一個類。這個被巢狀的類的作用域就只在它的上一級類中。
外圍類需要使用巢狀類物件作為底層實現,並且該巢狀類值用於外圍類的實現,且同時可以對使用者隱藏該底層實現
從作用域的角度看,巢狀類別隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類外的作用域使用該類名時,需要加名字限定
巢狀類中的成員函式可以在它的類體外定義。
巢狀類的成員函式對外圍類的成員沒有訪問權,反之亦然
#include <iostream>
using namespace std;
class Person
{
public:
int a;
void foo();
class Method
{
public:
int a;
void foo();
} b;
};
void Person::foo()
{
a = 1;
}
void Person::Method::foo()
{
a = 2;
}
int main()
{
class Person f;
f.foo();
f.b.foo();
cout << f.a << endl;
cout << f.b.a << endl;
return 0;
}
內部類
謂區域性類,就是定義在一個函式內部的類,這個類只能在這個函式內部使用。(在函式內部中定義)
兩點要求:
1、區域性類的成員函式必須定義在類體中。
2、區域性類不能有靜態成員
#include<iostream>
using namespace std;
int main()
{
//在函式內部中定義出Func類,那麼使用這個類的地方只能在這個函式空間裡
class Func
{
public :
int a;
void foo() { a = 4; }
};
class Func ff;
ff.foo();
cout << ff.a << endl;
return 0;
}