青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

twzheng's cppblog

『站在風(fēng)口浪尖緊握住鼠標(biāo)旋轉(zhuǎn)!』 http://www.cnblogs.com/twzheng

  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  136 隨筆 :: 78 文章 :: 353 評(píng)論 :: 0 Trackbacks


友元函數(shù)和友元類(lèi)


        采用類(lèi)的機(jī)制后實(shí)現(xiàn)了數(shù)據(jù)的隱藏與封裝,類(lèi)的數(shù)據(jù)成員一般定義為私有成員,成員函數(shù)一般定義為公有的,依此提供類(lèi)與外界間的通信接口。但是,有時(shí)需要定義一些函數(shù),這些函數(shù)不是類(lèi)的一部分,但又需要頻繁地訪問(wèn)類(lèi)的數(shù)據(jù)成員,這時(shí)可以將這些函數(shù)定義為該函數(shù)的友元函數(shù)。除了友元函數(shù)外,還有友元類(lèi),兩者統(tǒng)稱(chēng)為友元。友元的作用是提高了程序的運(yùn)行效率(即減少了類(lèi)型檢查和安全性檢查等都需要時(shí)間開(kāi)銷(xiāo)),但它破壞了類(lèi)的封裝性和隱藏性,使得非成員函數(shù)可以訪問(wèn)類(lèi)的私有成員。

友元函數(shù)
      友元函數(shù)是可以直接訪問(wèn)類(lèi)的私有成員的非成員函數(shù)。它是定義在類(lèi)外的普通函數(shù),它不屬于任何類(lèi),但需要在類(lèi)的定義中加以聲明,聲明時(shí)只需在友元的名稱(chēng)前加上關(guān)鍵字friend,其格式如下:
      friend  類(lèi)型 函數(shù)名(形式參數(shù));

      友元函數(shù)的聲明可以放在類(lèi)的私有部分,也可以放在公有部分,它們是沒(méi)有區(qū)別的,都說(shuō)明是該類(lèi)的一個(gè)友元函數(shù)。
      一個(gè)函數(shù)可以是多個(gè)類(lèi)的友元函數(shù),只需要在各個(gè)類(lèi)中分別聲明。
      友元函數(shù)的調(diào)用與一般函數(shù)的調(diào)用方式和原理一致。

友元類(lèi)
      友元類(lèi)的所有成員函數(shù)都是另一個(gè)類(lèi)的友元函數(shù),都可以訪問(wèn)另一個(gè)類(lèi)中的隱藏信息(包括私有成員和保護(hù)成員)。       
      當(dāng)希望一個(gè)類(lèi)可以存取另一個(gè)類(lèi)的私有成員時(shí),可以將該類(lèi)聲明為另一類(lèi)的友元類(lèi)。定義友元類(lèi)的語(yǔ)句格式如下:
      friend class 類(lèi)名;
      其中:friend和class是關(guān)鍵字,類(lèi)名必須是程序中的一個(gè)已定義過(guò)的類(lèi)。

      例如,以下語(yǔ)句說(shuō)明類(lèi)B是類(lèi)A的友元類(lèi):
      class A
      {
             …
      public:
             friend class B;
             …
      };
      經(jīng)過(guò)以上說(shuō)明后,類(lèi)B的所有成員函數(shù)都是類(lèi)A的友元函數(shù),能存取類(lèi)A的私有成員和保護(hù)成員。

      使用友元類(lèi)時(shí)注意:
            (1)
友元關(guān)系不能被繼承。
            (2) 友元關(guān)系是單向的,不具有交換性。若類(lèi)B是類(lèi)A的友元,類(lèi)A不一定是類(lèi)B的友元,要看在類(lèi)中是否有相應(yīng)的聲明。
            (3) 友元關(guān)系不具有傳遞性。若類(lèi)B是類(lèi)A的友元,類(lèi)C是B的友元,類(lèi)C不一定是類(lèi)A的友元,同樣要看類(lèi)中是否有相應(yīng)的申明

posted on 2007-03-31 21:35 譚文政 閱讀(60336) 評(píng)論(21)  編輯 收藏 引用 所屬分類(lèi): C/C++

評(píng)論

# re: 友元函數(shù)和友元類(lèi) 2008-09-19 08:55 jimzhao
經(jīng)典。
講得的很簡(jiǎn)單,看的很透徹,只是還差一個(gè)實(shí)例,呵呵。  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2008-10-11 09:15 辛夷
樓主,我要收藏走了,太好了  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-04-07 17:52 ls
好  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-05-21 12:06 winglong
謝謝!  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-05-24 22:48 logger
多謝!  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-08-22 10:39 imagany
講的很清楚,很受益  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-09-14 03:22 Mingxin
太泛泛了吧.  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-10-27 08:42 六呀
不錯(cuò)啊!
(*^__^*)   回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2009-12-22 15:14 smartvessel
友元函數(shù)是可以直接訪問(wèn)類(lèi)的私有成員的非成員函數(shù)。它是定義在類(lèi)外的普通函數(shù),它不屬于任何類(lèi)

友元函數(shù)可以是其他類(lèi)的成員函數(shù),因此它可以屬于其他類(lèi)。  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2010-03-14 20:19 zuoer
受益,謝謝版主!  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2010-03-31 18:57 喃喃
@zuoer
不錯(cuò),不錯(cuò)。  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2010-07-08 01:21 江南飄零
簡(jiǎn)潔明了哈~  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2010-08-07 17:29 121
書(shū)上又是說(shuō)明又是舉例說(shuō)的象天書(shū)一樣.還不如你這里簡(jiǎn)單明了  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2011-06-15 16:53 啊啊
你說(shuō)的太好了,留下QQ號(hào)唄,交流學(xué)習(xí)啊  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2012-02-08 11:35 zdc977
講得比較淺顯易懂  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi)[未登錄](méi) 2012-03-12 17:28 haha
“其中:friend和class是關(guān)鍵字,類(lèi)名必須是程序中的一個(gè)已定義過(guò)的類(lèi)。

是定義過(guò)的?還是聲明過(guò)的?  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi)[未登錄](méi) 2012-08-30 13:44 江哲
友元函數(shù)為什么可以提高運(yùn)行效率?這個(gè)安全檢查應(yīng)該是在編譯時(shí)做的吧
jiangzhe.lxh@taobao.com  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2013-04-24 11:35 xiaoyao3857
簡(jiǎn)單但透徹底  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2013-12-10 16:48 one day
#include <iostream>
using namespace std;

class YourClass
{
friend class YourOtherClass;
private:
int num;
public:
YourClass(int n)
{num=n;}
void display(char *YCname)
{
cout<<YCname<<".num: ";
cout<<num<<endl;
}
};

class YourOtherClass
{
public:
void disp1(YourClass yc, char *YCname)
{
cout<<YCname<<".num: ";
cout<<yc.num<<endl;
}

void disp2(YourClass yc, char *YCname)
{
yc.display(YCname);
}

};

int main()
{
YourClass a(10),b(100);

cout<<"YourClass: "<<endl;
a.display("a");
b.display("b");

YourOtherClass temp;

cout<<"YourOtherClass: "<<endl;
temp.disp1(a,"a");
temp.disp2(b,"b");


system("pause");
return 0;
}  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2013-12-10 16:50 one day
@江哲
可以直接訪問(wèn)類(lèi)的私有變量,無(wú)需調(diào)用接口函數(shù)  回復(fù)  更多評(píng)論
  

# re: 友元函數(shù)和友元類(lèi) 2014-10-23 18:51 地方
還好  回復(fù)  更多評(píng)論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲福利视频专区| 老鸭窝亚洲一区二区三区| 黄色国产精品| 久久久夜色精品亚洲| 国产一区二区福利| 久久久久欧美精品| 亚洲国产综合视频在线观看 | 国产精品系列在线| 欧美一区二区免费观在线| 免费观看一区| 一区二区三区色| 国产专区综合网| 欧美经典一区二区| 亚洲欧美国产日韩中文字幕| 欧美成人一区二区三区| 亚洲午夜视频在线| 一区在线视频| 国产精品国产三级国产aⅴ浪潮 | 欧美午夜不卡视频| 欧美在线观看视频在线| 91久久线看在观草草青青| 午夜精品一区二区三区四区 | 久久综合99re88久久爱| 99天天综合性| 激情五月婷婷综合| 欧美日韩一区二区三区| 久久亚洲电影| 亚洲欧美日韩一区在线| 亚洲激情一区二区| 久久免费黄色| 亚洲欧美日韩综合一区| 亚洲三级电影在线观看| 国产模特精品视频久久久久| 欧美精品一区二区三| 久久狠狠久久综合桃花| 亚洲素人在线| 亚洲乱码日产精品bd| 美女在线一区二区| 久久激情视频久久| 亚洲欧美久久| 国产精品99久久99久久久二8| 亚洲丶国产丶欧美一区二区三区| 国产精品女同互慰在线看| 欧美激情va永久在线播放| 久久久久久久国产| 欧美综合激情网| 亚洲欧美日韩天堂| 亚洲视频中文字幕| 亚洲乱码一区二区| 91久久综合| 国内激情久久| 久久先锋资源| 亚洲欧美一区二区在线观看| 亚洲激情在线视频| 激情一区二区| 激情综合在线| 国产在线观看精品一区二区三区| 国产精品久久久久久久第一福利| 欧美日韩国产123| 欧美va天堂| 欧美成人免费视频| 免费久久99精品国产自| 久久综合色影院| 免费成人av| 欧美国产综合一区二区| 欧美成人精品影院| 欧美精品久久99| 欧美日韩国产大片| 欧美区在线播放| 欧美日韩在线观看一区二区三区| 欧美日韩亚洲激情| 欧美性猛交99久久久久99按摩 | 夜夜精品视频一区二区| 亚洲国产日本| 日韩一级黄色av| 一本在线高清不卡dvd | 午夜欧美不卡精品aaaaa| 亚洲综合色噜噜狠狠| 亚洲欧美在线免费| 久久国产精品免费一区| 久久久久久久综合狠狠综合| 老司机67194精品线观看| 欧美freesex8一10精品| 欧美日韩国产高清视频| 国产精品乱码妇女bbbb| 国产一区视频网站| 亚洲国产一区在线观看| 一本久道久久久| 欧美一区二区高清| 蜜桃av噜噜一区| 亚洲精品国产品国语在线app| 亚洲美女精品久久| 亚洲永久在线观看| 久久久久在线观看| 欧美日韩岛国| 国模精品一区二区三区色天香| 亚洲国产一区二区视频| 亚洲一区二区精品| 久久字幕精品一区| 亚洲乱码一区二区| 欧美在线视频a| 欧美精品自拍| 国产一区二区中文| 亚洲三级电影在线观看| 性视频1819p久久| 欧美国产视频一区二区| 一区二区三区四区精品| 久久久久国产精品一区| 欧美视频导航| 亚洲国产精品999| 午夜精品久久久久久久99樱桃| 欧美成人视屏| 亚洲夜间福利| 欧美国产欧美亚洲国产日韩mv天天看完整 | 亚洲黄色影片| 欧美视频一区二区三区| 久久激情五月激情| 欧美高清视频一区二区| 亚洲深夜影院| 久久久久久亚洲精品不卡4k岛国| 欧美另类高清视频在线| 国产午夜精品视频免费不卡69堂| 亚洲最新色图| 蜜桃av综合| 午夜精品视频在线观看| 欧美日韩国产成人在线91| 激情综合视频| 欧美在线免费观看视频| 日韩亚洲欧美一区二区三区| 久久综合久久久久88| 国产欧美日韩一区二区三区在线观看| 亚洲毛片在线观看.| 久久九九久精品国产免费直播| 日韩一区二区免费看| 欧美成人三级在线| 国产在线国偷精品产拍免费yy| 亚洲综合视频网| 亚洲精品欧美日韩专区| 免费黄网站欧美| 在线日本成人| 老司机成人网| 久久久午夜精品| 国产在线不卡视频| 午夜日韩在线| 亚洲激情av在线| 久久综合成人精品亚洲另类欧美| 国产欧美一区二区精品忘忧草 | 亚洲免费电影在线观看| 老司机午夜精品| 久久精品国产第一区二区三区| 国产伦精品一区二区三区视频孕妇 | 久久男人av资源网站| 午夜精品在线看| 国产欧美一区二区在线观看| 亚洲男人的天堂在线aⅴ视频| 一本色道久久综合亚洲精品婷婷| 欧美日韩亚洲不卡| 99综合在线| 日韩一二三在线视频播| 欧美三级电影一区| 亚洲一区精品视频| 亚洲小说欧美另类婷婷| 国产精品视频大全| 久久gogo国模啪啪人体图| 午夜视频久久久久久| 国内精品美女在线观看| 免费在线亚洲欧美| 欧美成在线观看| 亚洲无线视频| 午夜一级久久| 怡红院精品视频在线观看极品| 欧美激情偷拍| 欧美日韩一区二区在线观看视频| 亚洲一区国产| 欧美一区二区视频免费观看 | 亚洲美女视频| 99re6热在线精品视频播放速度 | 亚洲夜间福利| 性欧美18~19sex高清播放| 激情欧美日韩一区| 亚洲国产精品视频| 国产精品久久一区二区三区| 久久精品一区中文字幕| 免费久久99精品国产自| 亚洲午夜精品17c| 欧美有码视频| 亚洲美女在线视频| 亚洲影院一区| 亚洲成人资源| 一区二区三区欧美亚洲| 国语自产精品视频在线看| 亚洲经典在线看| 国产精品一区二区三区免费观看| 久久久亚洲人| 欧美日韩视频一区二区| 久久免费国产| 欧美午夜不卡| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美人成在线视频| 久久久夜色精品亚洲|