public體現了C++的封裝性 PRivate體現了C++的封閉特性 用戶代碼(類外)可以訪問public成員而不能訪問private成員;private成員只能由類成員(類內)和友元訪問。
protect體現了C++d的繼承性 protected成員可以被派生類對象訪問,不能被用戶代碼(類外)訪問。
有public, protected, private三種繼承方式,它們相應地改變了基類成員的訪問屬性。 基類中私有變量無法訪問 public繼承:基類public成員,protected成員的訪問屬性在派生類中分別變成:public, protected protected繼承:基類public成員,protected成員的訪問屬性在派生類中分別變成 protected,protected private繼承:基類public成員,protected成員的訪問屬性在派生類中分別變成private
友元是一種定義在類外部的普通函數,但他需要在類體內進行說 明,為了和該類的成員函數加以區別,在說明時前面加以關鍵字friend。友元不是成員函數,但是他能夠訪問類中的私有成員。友元的作用在于提高程式的運 行效率,但是,他破壞了類的封裝性和隱藏性,使得非成員函數能夠訪問類的私有成員。 friend double Distance(Point &a, Point &b); 成員函數的定義,他無需指出所屬的類,就能夠引用類中的私有成員。 友元函數須通過對象調用,所以它的參數有對象
友元函數 : 友元函數是可以直接訪問類的私有成員的非成員函數。它是定義在類外的普通函數,它不屬于任何類,但需要在類的定義中加以聲明,聲明時只需在友元的名稱前加上關鍵字friend,其格式如下: friend 類型 函數名(形式參數);
友元函數的聲明可以放在類的私有部分,也可以放在公有部分,它們是沒有區別的,都說明是該類的一個友元函數。 一個函數可以是多個類的友元函數,只需要在各個類中分別聲明。 友元函數的調用與一般函數的調用方式和原理一致。友元類的所有成員函數都是另一個類的友元函數,都可以訪問另一個類中的隱藏信息(包括私有成員和保護成員)。 當希望一個類可以存取另一個類的私有成員時,可以將該類聲明為另一類的友元類。定義友元類的語句格式如下: friend class 類名; 其中:friend和class是關鍵字,類名必須是程序中的一個已定義過的類。
例如,以下語句說明類B是類A的友元類: class A { … public: friend class B; … }; 經過以上說明后,類B的所有成員函數都是類A的友元函數,能存取類A的私有成員和保護成員。使用友元類時注意: (1) 友元關系不能被繼承。 (2) 友元關系是單向的,不具有交換性。若類B是類A的友元,類A不一定是類B的友元,要看在類中是否有相應的聲明。 (3) 友元關系不具有傳遞性。若類B是類A的友元,類C是B的友元,類C不一定是類A的友元,同樣要看類中是否有相應的申明
新聞熱點
疑難解答
圖片精選