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