將資料與處理資料的函式封裝在一起,構成類,即實現了資料的共享又實現了隱藏,無疑是面向程式設計的一大優點,但是封裝並不總是完美的,一旦需要涉及到乙個類的兩個物件的資料處理問題該怎麼辦?無論是設計成乙個類外的普通函式還是乙個成員函式都不是那麼讓人滿意,那麼該怎麼處理這個問題呢?友元類的機制給我們提供了一種思路。
友元關係提供了不同類或物件的成員函式之間、類的成員函式與一般函式之間進行資料共享的機制。
一旦將a類設定為了b的友元類,那麼a的所有成員函式都是b類的友元函式,都可以訪問b類的私有和保護成員。
用法:通過<>構造性來實現。
下面是**例項:
#include "測試結果如下:pch.h
"#include
using
namespace
std;
class
dog;
dog::dog(
int newweight, int
newage)
void
dog::show()
class
bprivate
:
int number=3;};
intmain() //主函式測試
測試結果表明dog的友元b是可以去訪問dog的資料的,這樣,就實現了資料的共享。
上面**實現的是b訪問dog的資料,既然存在友元關係,那麼,dog能訪問到b中的資料嗎?我們修改**如下圖。
#include "如果能進行訪問,那麼列印的結果應該為「3」,但是編譯器顯示錯誤,無法執行,那麼說明,當b是dog的友元是,dog無法訪問到b中的資料,僅b可以訪問dog的資料。pch.h
"#include
using
namespace
std;
class
dog;
void dog::show(b &a) //對b類中的資料進行訪問
classb;
intmain()
通過實踐以及對書的理解,我們最終可以得出:
C 第三次實驗 友元函式
檔名稱 友元函式.cpp 作 者 楊曉東 完成日期 2016 年 4 月 8 日 版 本 號 v1.0 對任務及求解方法的描述部分 使用成員函式 友元函式和一般函式 輸入描述 略 問題描述 求兩點間距離 程式輸出 略 問題分析 略 演算法設計 略 一 問題及 include include usin...
C 第三次作業
一 include using namespace std class time bool time is 24 true bool time from0 false time time int h,int m,int s hour h minute m sec s void time show t...
c 第三次作業
一 專案二 本月有多少天 檔名稱 本月有多少天 作 者 劉詩雨 完成日期 2016 年 04 月 12 日 版 本 號 v1.0 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 問題分析 演算法設計 includeusing namespace std int main return 0 ...