C++ 友元函数
生活中你的家有客廳(Public),有你的臥室(Private)
客廳所有來(lái)的客人都可以進(jìn)去,但是你的臥室是私有的,也就是說(shuō)只有你能進(jìn)去
但是呢,你也可以允許你的好閨蜜好基友進(jìn)去。
在程序里,有些私有屬性也想讓類外特殊的一些函數(shù)或者類進(jìn)行訪問(wèn), 就需要用到友元的技術(shù)
友元的目的就是讓一個(gè)函數(shù)或者類訪問(wèn)另-個(gè)類中私有成員
友元的關(guān)鍵字為friend I
友元的三種實(shí)現(xiàn)
●全局函數(shù)做友元
●類做友元
●成員函數(shù)做友元
我們先用第一種實(shí)現(xiàn)友元函數(shù)全局函數(shù)做友元:
#include<iostream> #include<string> using namespace std;class Building{//告訴編譯器goodGay全局函數(shù)是Building類的好朋友,可以訪問(wèn)類中的私有內(nèi)容friend void goodGay(Building * building); public:Building() {this->m_SittingRoom = "客廳";this->m_BedRoom = "臥室";} public:string m_SittingRoom; //客廳 private:string m_BedRoom; //臥室 }; void goodGay(Building * building) {cout << "好基友正在訪問(wèn):" << building->m_SittingRoom << endl;cout << "好基友正在訪問(wèn): "<< building->m_BedRoom << endl; }void test01(){Building b;goodGay(&b); } int main() {test01();system("pause"); }類做友元:
#include<iostream> #include<string> using namespace std;class Building; class goodGay{public:goodGay();void visit();private:Building * building; }; class Building{//告訴編譯器goodGay類是Building美的好朋友,可以訪問(wèn)到Building類中私有內(nèi)容friend class goodGay;public:Building();public:string m_SittingRoom; //客廳private:string m_BedRoom;//臥室};Building::Building() {this->m_SittingRoom = "客廳";this->m_BedRoom = "臥室"; } goodGay::goodGay() {building = new Building;} void goodGay :: visit(){cout << "好基友正在訪問(wèn)"<< building->m_SittingRoom << endl;cout << "好基友正在訪問(wèn)"<< building->m_BedRoom << endl; }void test01() {goodGay gg;gg.visit(); }int main() {test01();system("pause"); }成員函數(shù)做友元:
#include<iostream> #include<string> using namespace std;class Building {//告訴編譯器goodGay全 局函數(shù)是Building類的好朋友,可以訪問(wèn)類中的私有內(nèi)容friend void goodGay(Building * building);public:Building(){this->m_SittingRoom = "客廳";this->m_BedRoom = "臥室";}public:string m_SittingRoom; //客廳private:string m_BedRoom; //臥室};void goodGay(Building * building) {cout << "好基友正在訪問(wèn):" << building-> m_SittingRoom << endl;cout << "好基友正在訪問(wèn):" << building->m_BedRoom << endl; }void test01() {Building b;goodGay(&b); } int main() {test01();system("pause");return 0; }?
總結(jié)
- 上一篇: Java类库及其组织结构(Java AP
- 下一篇: Java数据类型转换(自动转换和强制转换