1. 程式人生 > >C++----類成員函式做友元函式

C++----類成員函式做友元函式

//成員函式做友元函式:
//只讓visit1做building的好朋友(只有visit1能訪問building的私有屬性)

class Building;
class goodGay
{
public:
	goodGay();
	void visit1();
	void visit2();

private:
	Building * building;
};
//類內宣告,類外實現;
class Building
{
	//讓成員函式visit1做友元函式:
	friend void goodGay::visit1();
public:
	Building();
public:
	string m_sittingroom;	//客廳
private:
	string m_bedroom;		//臥室
};
Building::Building()
{
	this->m_bedroom = "臥室";
	this->m_sittingroom = "客廳";
}
goodGay::goodGay()
{
	building = new Building;
}
void goodGay::visit1()
{
	cout << "基友正在" << this->building->m_sittingroom << endl;
	//要訪問私有屬性的元素;
	//在Building 類中定義友元類:friend class goodGay;
	cout << "基友正在" << this->building->m_bedroom << endl;

}
void goodGay::visit2()
{
	cout << "基友正在" << this->building->m_sittingroom << endl;
	//要訪問私有屬性的元素;
	//在Building 類中定義友元類:friend class goodGay;
	//cout << "基友正在" << this->building->m_bedroom << endl;
}
void test01()
{
	goodGay g1;
	g1.visit1();
}
int main()
{
	test01();
	return 0;
}

1.首先定義class goodGay,其中宣告visit1函式,但是不能定義它。在visit1使用class Building的成員之前必須先宣告class Building;

2.接下來定義class Building , 包括對於visit1的友元宣告;

3.最後定義visit1,此時他才可以使用class Building的成員。

//參考資料:C++ primer 5th