002友元類

/*
生活中你的家有客廳(Public),有你的臥室(Private)
客廳所有來的客人都可以進去,但是你的臥室是私有的,也就是說只有你能進去
但是呢,你也可以允許你的好閨蜜好基友進去。
在程序裏,有些私有屬性 也想讓類外特殊的一些函數或者類進行訪問,就需要用到友元的技術
友元的目的就是讓一個函數或者類 訪問另一個類中私有成員
*/
#include<iostream>
#include<string>
using namespace std;
class MyFamily;//先進行類的聲明

class GoodFriend
{
public:
	GoodFriend();
	 void visit();
private:
	MyFamily *myfamily;
};




class MyFamily
{
	//告訴c++編譯器。goodFriend類是MyFamily類的好朋友。可以訪問MyFamily類中的私有屬性
	friend class GoodFriend;
	//友元函數可以聲明在public裏面,也可以寫在外面,表示這個函數不屬於這個類。
public:

	MyFamily(string sittingroom, string bedroom)
	{
		this->sittingroom = sittingroom;
		this->bedroom = bedroom;
	}
private:
	string sittingroom;
	string bedroom;
};

//這個函數的實現必須放在類MyFamily中的定義之後,放在前面的聲明後不行
GoodFriend::GoodFriend()
{
	myfamily = new MyFamily("客廳", "臥室");//此處調用myFamily類對象的構造函數
}

void GoodFriend::visit()
{
	cout << "正在訪問私有屬性" << myfamily->sittingroom << endl;
	cout << "正在訪問私有屬性" << myfamily->bedroom << endl;

}


void playObject()
{
	GoodFriend gf1;
	gf1.visit();

}

int main(void)
{
	playObject();

	system("pause");
	return 0;
}

/*
 *
 * 創建一個家庭類,家庭類有私有屬性臥室和客廳,
 * 創建好朋友類,好朋友方法visit訪問家庭類的私有屬性。
 * 訪問誰的私有屬性,就把要訪問的類對象聲明爲私在誰的裏面進行聲明friend
 * GoodFriend類對象要包含一個MyFamily類對象或者指針。
 */

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章