【C++學習筆記】 3-6 友元


1. 友元函數


一個類的有元函數可以訪問該類的私有成員

class CCar; //提前聲明CCar類,以便後面CDriver類使用
class CDriveer{
	public:
		void ModifyCar(CCar * pCar); //改裝汽車
};
class CCar{
	private:
		int price;
	friend int MostExpensiveCar(CCar cars[], int tatal);  //聲明友元
	friend void CDriver::ModifyCar(CCar * pCar);          //聲明友元
}void CDriver::ModifyCar(CCar * pCar)
{
	pCar->price += 1000;  //汽車改裝後價值增加
}
int MostExpensiceCar(CCar cars[], int total)
{
	int tmpMax = -1;
	for(int i = 0; i < total; ++i)
		if(cars[i].price > tmpMax)
			tmpMax = cars[i].price;
	
	return tmpMax;
}
int main()
{
	return 0;
}

將一個類的成員函數(包括構造,析構函數)指向另一個類的友元

class B{
	public:
		void function();
};
class A{
	friend void B::function();
};

2. 友元類


A是B的友元類 -> A的成員函數可以訪問B的私有成員

class CCar{
	private:
		int price;
	friend class CDriver; //聲明CDriver爲友元類
};
class CDriver{
	public:
		CCar myCar;
		void ModifyCar()
		{  //改裝汽車
			myCar.price += 1000; //CDriver是CCar的友元類->可以訪問其私有成員
	}
}int main(){return 0;}

友元類之間的關係,不能傳遞,不能繼承。


站在巨人的肩上
【1】北京大學信息技術學院《程序設計實習》

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