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

在說明什么是友元之前,我們先說明一下為什么需要友元與友元的缺點(diǎn):

  通常對(duì)于普通函數(shù)來說,要訪問類的保護(hù)成員是不可能的,如果想這么做那么必須把類的成員都生命成為public(共用的),然而這做帶來的問題遍是任何外部函數(shù)都可以毫無約束的訪問它操作它,c++利用friend修飾符,可以讓一些你設(shè)定的函數(shù)能夠?qū)@些保護(hù)數(shù)據(jù)進(jìn)行操作,避免把類成員全部設(shè)置成public,最大限度的保護(hù)數(shù)據(jù)成員的安全。

  友元能夠使得普通函數(shù)直接訪問類的保護(hù)數(shù)據(jù),避免了類成員函數(shù)的頻繁調(diào)用,可以節(jié)約處理器開銷,提高程序的效率,但矛盾的是,即使是最大限度的保護(hù),同樣也破壞了類的封裝特性,這即是友元的缺點(diǎn),在現(xiàn)在cpu速度越來越快的今天我們并不推薦使用它,但它作為c++一個(gè)必要的知識(shí)點(diǎn),一個(gè)完整的組成部分,我們還是需要討論一下的。

在類里聲明一個(gè)普通函數(shù),在前面加上friend修飾,那么這個(gè)函數(shù)就成了該類的友元,可以訪問該類的一切成員。
下面我們來看一段代碼,看看我們是如何利用友元來訪問類的一切成員的。
#include <iostream>
using namespace std;
class Internet
{
public:
 Internet(char *name,char *address)
 {
 strcpy(Internet::name,name);
 strcpy(Internet::address,address);
 }
friend void ShowN(Internet &obj);//友元函數(shù)的聲明
public:
 char name[20];
 char address[20];
};
 
 
void ShowN(Internet &obj)//函數(shù)定義,不能寫成,void Internet::ShowN(Internet &obj)
{
 cout<<obj.name<<endl;
}
void main()
{
 Internet a("中國軟件開發(fā)實(shí)驗(yàn)室","www.cndev-lab.com");
 ShowN(a);
 cin.get();
}

上面的代碼通過友元函數(shù)的定義,我們成功的訪問到了a對(duì)象的保護(hù)成員name,友元函數(shù)并不能看做是類的成員函數(shù),它只是個(gè)被聲明為類友元的普通函數(shù),所以在類外部函數(shù)的定義部分不能夠?qū)懗蓈oid Internet::ShowN(Internet &obj),這一點(diǎn)要注意。
一個(gè)普通函數(shù)可以是多個(gè)類的友元函數(shù),對(duì)上面的代碼我們進(jìn)行修改,注意觀察變化:
#include <iostream>
using namespace std;
class Country;
class Internet
{
public:
 Internet(char *name,char *address)
 {
 strcpy(Internet::name,name);
 strcpy(Internet::address,address);
 }
friend void ShowN(Internet &obj,Country &cn);//注意這里
public:
 char name[20];
 char address[20];
};
 
class Country
{
public:
 Country()
 {
 strcpy(cname,"中國");
 }
friend void ShowN(Internet &obj,Country &cn);//注意這里
protected:
 char cname[30];
};
 
void ShowN(Internet &obj,Country &cn)
{
 cout<<cn.cname<<"|"<<obj.name<<endl;
}
void main()
{
 Internet a("中國軟件開發(fā)實(shí)驗(yàn)室","www.cndev-lab.com");
 Country b;
 ShowN(a,b);
 cin.get();
}
  一個(gè)類的成員函數(shù)函數(shù)也可以是另一個(gè)類的友元,從而可以使得一個(gè)類的成員函數(shù)可以操作另一個(gè)類的數(shù)據(jù)成員,我們?cè)谙旅娴拇a中增加一類Country,注意觀察:
#include <iostream>
using namespace std;
class Internet;
 
class Country
{
public:
 Country()
 {
 strcpy(cname,"中國");
 }
 void Editurl(Internet &temp);//成員函數(shù)的聲明
protected:
 char cname[30];
};
class Internet
{
public:
 Internet(char *name,char *address)
 {
 strcpy(Internet::name,name);
 strcpy(Internet::address,address);
 }
 friend void Country::Editurl(Internet &temp);//友元函數(shù)的聲明
protected:
 char name[20];
 char address[20];
};
void Country::Editurl(Internet &temp)//成員函數(shù)的外部定義
{
 strcpy(temp.address,"edu.cndev-lab.com");
 cout<<temp.name<<"|"<<temp.address<<endl;
}
void main()
{
 Internet a("中國軟件開發(fā)實(shí)驗(yàn)室","www.cndev-lab.com");
 Country b;
 b.Editurl(a);
 cin.get();
}
整個(gè)類也可以是另一個(gè)類的友元,該友元也可以稱做為友類。友類的每個(gè)成員函數(shù)都可以訪問另一個(gè)類的所有成員。
示例代碼如下:
#include <iostream>
using namespace std;
class Internet;
 
class Country
{
public:
 Country()
 {
 strcpy(cname,"中國");
 }
 friend class Internet;//友類的聲明
protected:
 char cname[30];
};
class Internet
{
public:
 Internet(char *name,char *address)
 {
 strcpy(Internet::name,name);
 strcpy(Internet::address,address);
 }
 void Editcname(Country &temp);
protected:
 char name[20];
 char address[20];
};
void Internet::Editcname(Country &temp)
{
 strcpy(temp.cname,"中華人民共和國");
}
void main()
{
 Internet a("中國軟件開發(fā)實(shí)驗(yàn)室","www.cndev-lab.com");
 Country b;
 a.Editcname(b);
 cin.get();
}
  

在上面的代碼中我們成功的通過Internet類Editcname成員函數(shù)操作了Country類的保護(hù)成員cname。

  在編程中,我們使用友元的另外一個(gè)重要原因是為了方便重載操作符的使用,這些內(nèi)容我們將在后面的教程著重討論!
Posted on 2005-12-31 10:15 艾凡赫 閱讀(209) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美激情亚洲激情| 欧美一区二区三区免费看| 蜜桃av一区二区| 美女网站在线免费欧美精品| 麻豆国产精品777777在线 | 国产精品入口日韩视频大尺度| 亚洲欧美日韩精品久久亚洲区| 亚洲免费黄色| 性做久久久久久免费观看欧美| 亚洲免费在线视频一区 二区| 欧美一区午夜视频在线观看| 99精品热视频只有精品10| 亚洲另类春色国产| 午夜精品区一区二区三| 欧美专区18| 欧美日韩精品一区二区三区四区 | 国产精品久久久久77777| 欧美日韩在线大尺度| 国产精品xxxxx| 国产亚洲欧美中文| 日韩天堂av| 另类专区欧美制服同性| 99re6这里只有精品| 欧美成人国产| 国产欧美一区二区精品秋霞影院 | 免费视频亚洲| 国产精品五月天| 亚洲精品一区二区三区婷婷月| 午夜精品成人在线| 一本色道久久综合亚洲精品按摩| 久久国产精品99久久久久久老狼| 欧美激情国产精品| 99re6热只有精品免费观看| 男女激情视频一区| 久久九九国产精品| 国产自产在线视频一区| 韩国av一区二区三区四区| 亚洲欧美不卡| 亚洲一线二线三线久久久| 欧美午夜寂寞影院| 日韩午夜在线播放| 亚洲制服少妇| 在线欧美视频| 亚洲黄色天堂| 欧美激情精品久久久久久| 99re66热这里只有精品4| 伊人久久婷婷色综合98网| 欧美成人午夜激情视频| 能在线观看的日韩av| 99热免费精品在线观看| av成人国产| 尹人成人综合网| 亚洲激情电影在线| 国产精品视频免费| 欧美电影免费| 国产区在线观看成人精品| 久久综合九九| 欧美裸体一区二区三区| 中文一区二区在线观看| 亚洲女女做受ⅹxx高潮| 亚洲国产精品va在线看黑人动漫| 亚洲另类在线一区| 在线日韩电影| 亚洲在线观看视频| 亚洲免费精彩视频| 久久精品三级| 久久久久久亚洲精品中文字幕| 欧美精品亚洲精品| 狂野欧美激情性xxxx| 国产精品一区二区久久| 国产精品毛片| 亚洲一区二区三区乱码aⅴ蜜桃女| 在线观看91精品国产入口| 性色av一区二区三区| 久久久国产成人精品| 欧美理论电影网| 亚洲精品网站在线播放gif| 亚洲国产美女精品久久久久∴| 欧美伊人久久久久久久久影院| 欧美一级视频免费在线观看| 国产精品九九久久久久久久| 欧美人与性动交cc0o| 小处雏高清一区二区三区| 久久婷婷av| 亚洲国产精品123| 最新亚洲一区| 国产精品久久福利| 久久久99精品免费观看不卡| 欧美韩日一区二区| 亚洲小说欧美另类婷婷| 国产欧美在线视频| 蜜桃伊人久久| 亚洲一区二区三区精品视频| 久久久久久穴| 亚洲一区二区三区久久| 国产一区二区三区最好精华液| 久色婷婷小香蕉久久| 日韩视频不卡| 欧美一区视频| 亚洲三级免费| 国语自产在线不卡| 欧美日韩中国免费专区在线看| 亚洲一区二区三区免费观看| 亚洲国产导航| 免费在线亚洲| 久久精品成人| 一区二区三区日韩精品视频| 欧美日韩精品是欧美日韩精品| 久久精品国产精品亚洲| 亚洲一级高清| 亚洲性感美女99在线| 亚洲综合欧美| 亚洲欧美成人网| 亚洲自拍偷拍色片视频| av成人激情| 亚洲综合国产| 亚洲欧洲av一区二区| 亚洲精品日韩精品| 亚洲黄色天堂| 亚洲视频免费| 亚洲欧美在线免费| 久久国产精品99久久久久久老狼| 一区二区三区偷拍| 一区二区三区产品免费精品久久75| 亚洲国产岛国毛片在线| 在线中文字幕一区| 亚洲综合不卡| 老司机午夜免费精品视频| 老牛嫩草一区二区三区日本| 欧美国产另类| 亚洲一二三区视频在线观看| 香蕉免费一区二区三区在线观看| 欧美中文在线字幕| 欧美喷水视频| 欧美成人精品一区| 国产精品亚洲人在线观看| 在线观看日韩专区| 亚洲一二三区在线观看| 久久全球大尺度高清视频| 亚洲三级观看| 久久乐国产精品| 国产日本欧美一区二区三区在线 | a4yy欧美一区二区三区| 欧美一区三区二区在线观看| 欧美日韩高清在线观看| 日韩视频第一页| 免费成人av在线| 欧美在线国产精品| 国产日韩欧美一区二区三区四区| 一区二区三区四区五区在线| 欧美激情第10页| 久久婷婷蜜乳一本欲蜜臀| 国产欧美日韩一区| 久久精品久久综合| 久久国产精品一区二区三区四区| 亚洲欧美一区二区三区极速播放| 黄色一区二区在线| 久久久99久久精品女同性| 亚洲欧美日韩直播| 精品成人久久| 欧美插天视频在线播放| 久久久久久久久久码影片| 亚洲欧美日韩精品久久亚洲区| 国产精品a久久久久| 香蕉久久夜色精品国产| 性欧美videos另类喷潮| 国产午夜精品在线观看| 美国十次成人| 欧美福利一区| 久久国产精品久久w女人spa| 久久夜色精品一区| 中文av字幕一区| 久久久久久伊人| 亚洲视频导航| 老鸭窝毛片一区二区三区| 一本大道久久a久久精品综合| 一区二区三区|亚洲午夜| 国产亚洲免费的视频看| 免费成人你懂的| 欧美精品一区在线播放| 久久xxxx| 国产精品影院在线观看| 久久久久久国产精品mv| 欧美日韩一区二区三| 久久综合一区二区| 国产欧美日本一区二区三区| 一本久道久久久| 亚洲精品综合久久中文字幕| 欧美一区永久视频免费观看| 亚洲综合丁香| 欧美日韩国产在线一区| 免费观看在线综合| 黑人巨大精品欧美一区二区| 性久久久久久久| 免费欧美在线视频| 亚洲精品国精品久久99热| 欧美www在线| 一区二区国产在线观看| 亚洲欧美日韩精品综合在线观看| 欧美日韩精品一区二区在线播放 |