1. 程式人生 > >C++巢狀類與內部類

C++巢狀類與內部類

————————————————–先從定義上來區分————————————————–
巢狀類
      所謂巢狀類就是可以在一個類中定義另一個類。這個被巢狀的類的作用域就只在它的上一級類中。
      外圍類需要使用巢狀類物件作為底層實現,並且該巢狀類值用於外圍類的實現,且同時可以對使用者隱藏該底層實現
      從作用域的角度看,巢狀類別隱藏在外圍類之中,該類名只能在外圍類中使用。如果在外圍類外的作用域使用該類名時,需要加名字限定
      巢狀類中的成員函式可以在它的類體外定義。
      巢狀類的成員函式對外圍類的成員沒有訪問權,反之亦然

#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; }

這裡寫圖片描述