亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++教程:C++友元函數講解

2020-05-23 14:25:42
字體:
來源:轉載
供稿:網友
私有成員數據除了可能被別的類訪問之外,也可能被別的函數或別的類的部分成員函數訪問。為了保證類的封裝性,我們可以以函數作為單位,“對外開放”類的私有成員。與聲明友元類類似,如果我們想用函數訪問鏈表結點類的私有成員數據,則那些函數必須得到鏈表結點類的認可。聲明友元函數的語句格式為:
    friend 返回值類型函數名(參數表);
如果該函數是某個類的成員函數,則語句格式為:
    friend 返回值類型類名::函數名(參數表);

需要注意的是,在聲明友元成員函數時,可能會牽扯出一系列的類的聲明順序問題。當類的結構本身就比較復雜時,友元的使用可能會使得這個問題愈加突出。
下面我們就用友元函數來輸出一個結點的信息:(程序16.2.2)
//node.h
class Node
{
   friend class Linklist; //在Node類中聲明友元類Linklist
   friend void ShowNode(Node &n);//聲明友元函數ShowNode
   public:
   Node();
   Node(Node &n);
   Node(int i,char c='0');
   Node(int i,char c,Node *p,Node *n);
   ~Node();
   static int allocation();
   private:
   int idata;
   char cdata;
   Node *prior;
   Node *next;
   static int count;
};
//node.cpp
//其余部分同程序16.2.1
void ShowNode(Node &n)
{
   cout <<n.idata <<'/t' <<n.cdata <<endl;//友元函數可以訪問私有成員數據
}
//linklist.h同程序16.2.1
//main.cpp
#include <iostream>
#include "Linklist.h"
using namespace std;
int main()
{
   int tempi;
   char tempc;
   cout <<"請輸入一個整數和一個字符:" <<endl;
   cin >>tempi >>tempc;
   Linklist a(tempi,tempc);
   a.Locate(tempi);
   a.Insert(1,'C');
   a.Insert(2,'B');
   cout <<"After Insert" <<endl;
   a.Show();
   Node b(4,'F');
   cout <<"An independent node created" <<endl;
   cout <<"Use friend function to show node" <<endl;
   ShowNode(b);//用友元函數輸出b結點的內容
   return 0;
}

運行結果:
請輸入一個整數和一個字符:
3 F
Node constructor is running...
Linklist constructor is running...
Node constructor is running...
Node constructor is running...
After Insert
3 F
2 B
1 C
Node constructor is running...
An independent node created
Use friend function to show node
4 G
Node destructor is running...
Linklist destructor is running...
Node destructor is running...
Node destructor is running...
Node destructor is running...

我們看到函數ShowNode成功地訪問了鏈表結點b的私有成員數據。所以當一個函數要訪問一個或多個對象的私有成員時,我們可以用友元來解決這個問題。

友元的利與弊

我們使用了友元之后,發現在設計程序的時候方便了很多。原先的那些私有成員都能輕松地被訪問了。于是我們不用去寫那些繁瑣的成員函數,程序執行的時候也減少了函數的調用次數,提高了運行效率。

一個“好朋友”帶來的是效率和方便,而一個“壞朋友”卻能帶來更多的麻煩。友元的存在,破壞了類的封裝性。一個類出現問題,就不僅僅是由這個類本身負責了,還可能和它眾多的友元有關。這無疑使得檢查調試的范圍突然擴大了許多,難度也陡然增加。

所以,我們在使用友元的時候,權衡使用友元的利弊,使程序達到最佳的效果。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产一区二区三区四区在线观看| 一本一本久久a久久精品综合小说| 亚洲丝袜在线视频| 91麻豆国产精品| 亚洲free性xxxx护士白浆| 久久久久久网址| 日韩免费视频在线观看| xvideos成人免费中文版| 欧美亚洲在线播放| 91人成网站www| 91av中文字幕| 欧美成人精品一区| 亚洲第一精品福利| 久久精品亚洲精品| xxxxx91麻豆| 国产精品一区二区三区毛片淫片| 久久中文字幕国产| 亚洲韩国青草视频| 亚洲欧美国产高清va在线播| 亚洲性生活视频在线观看| 国产精品久久久久久一区二区| 成人xvideos免费视频| 日韩免费在线观看视频| 俺去亚洲欧洲欧美日韩| 91久热免费在线视频| 久久躁狠狠躁夜夜爽| 国内揄拍国内精品少妇国语| 亚洲综合视频1区| 欧美激情精品久久久久久免费印度| 日本久久91av| 在线观看欧美日韩国产| 国产精品电影网| 亚洲中国色老太| 在线电影欧美日韩一区二区私密| 亚洲一区二区国产| 欧美视频精品一区| 亚洲免费小视频| 中文字幕日韩高清| 欧美精品第一页在线播放| 日韩av影院在线观看| 欧美成年人视频网站| 欧美日韩日本国产| 日韩免费观看在线观看| 国产91免费看片| 欧美成人精品不卡视频在线观看| 欧美高清无遮挡| 国产精品扒开腿做爽爽爽视频| 一区二区三区动漫| 久久夜色精品国产欧美乱| 国产91精品黑色丝袜高跟鞋| 精品久久中文字幕久久av| 精品久久久久久国产91| 精品国产鲁一鲁一区二区张丽| 欧美午夜久久久| 日韩高清欧美高清| 成人福利网站在线观看11| 亚洲深夜福利视频| 欧美一级在线亚洲天堂| 国产欧美欧洲在线观看| 国产日韩中文字幕| 亚洲大胆人体视频| 亚洲激情在线观看| 亚洲精品第一国产综合精品| 国产精品免费看久久久香蕉| 国产午夜精品全部视频播放| 欧美亚洲国产精品| 一区二区三区 在线观看视| 国产精品嫩草视频| 国产精品永久免费观看| 国产欧美精品久久久| 久久久精品日本| 欧美精品videosex牲欧美| 亚洲网站在线看| 日韩精品在线观| 亚洲激情在线观看| 久久免费视频观看| 日韩中文字幕精品视频| 国产一区二区激情| 国产成人精品午夜| 色爱精品视频一区| 日韩欧美精品网址| 日韩中文有码在线视频| 国产午夜精品一区理论片飘花| 亚洲欧洲高清在线| 国产不卡一区二区在线播放| 韩剧1988免费观看全集| 国产精品久久久| 国产精品久久久久久久久久久不卡| 欧美性xxxx极品高清hd直播| 成人黄色在线播放| 日韩欧美中文第一页| 欧美日韩亚洲精品一区二区三区| 日韩精品亚洲精品| 欧美精品九九久久| 日本午夜人人精品| 亚洲护士老师的毛茸茸最新章节| 亚洲成年人影院在线| 日韩中文字幕精品| 亚洲精选在线观看| 亚洲图片制服诱惑| www.日本久久久久com.| 在线观看国产精品日韩av| 亚洲免费视频观看| 欧美性少妇18aaaa视频| 国产亚洲欧美一区| 欧美视频中文字幕在线| 亚洲乱码av中文一区二区| 国产亚洲精品久久久久久| 国产日韩精品一区二区| 九九热最新视频//这里只有精品| 亚洲国产日韩一区| 欧美视频二区36p| 日韩欧美国产视频| 国产色婷婷国产综合在线理论片a| 久久99热精品| 欧美激情xxxx| 亚洲激情视频网| 国产一区玩具在线观看| 日韩中文字幕视频在线观看| 91久久精品一区| 日韩中文字幕第一页| 亚洲精品美女在线观看播放| 97av在线视频| 亚洲精品av在线| 精品久久久久久久大神国产| 欧美性jizz18性欧美| 亚洲第一中文字幕| 91亚洲精品久久久久久久久久久久| 精品国产福利视频| 日韩中文字幕精品| 亚洲国产欧美日韩精品| 国产精品成人国产乱一区| 亚洲xxx大片| 91po在线观看91精品国产性色| 国产69精品久久久| 国产精品老女人视频| 91禁国产网站| 亚洲黄页视频免费观看| 91免费在线视频| 久久久国产精彩视频美女艺术照福利| 91国偷自产一区二区三区的观看方式| 国产中文字幕日韩| 亚洲第一视频在线观看| 久久国内精品一国内精品| 中文字幕欧美日韩va免费视频| 久久91亚洲人成电影网站| 午夜精品美女自拍福到在线| 国产视频精品一区二区三区| 亚洲性生活视频| 午夜精品免费视频| 日本精品免费一区二区三区| 91精品国产高清久久久久久久久| 国产亚洲成av人片在线观看桃| 午夜精品视频网站| 欧美激情在线一区| 精品夜色国产国偷在线| 精品久久久久久久久中文字幕| 国产91免费观看| 日韩一区二区在线视频| 中文字幕在线观看亚洲| 57pao成人国产永久免费| 中文字幕亚洲欧美一区二区三区| 8050国产精品久久久久久| 欧美影院成年免费版|