친구 기능
글로벌 함수 또는 다른 클래스의 멤버 함수는 friend 함수로 선언 할 수있다, 내부 기능은 친구의 전용 멤버 클래스를 사용할 수 있습니다
#include<iostream>
using namespace std;
class CCar; //提前声明CCar类,以便后面的CDriver类使用
class CDriver
{
public:
void ModifyCar(CCar* pCar); //改装汽车
};
class CCar
{
private:
int price;
friend int MostExpensiveCar(CCar cars[], int total); //声明友元
friend void CDriver::ModifyCar(CCar* pCar); //声明友元
};
void CDriver::ModifyCar(CCar* pCar)
{
pCar->price += 1000; //汽车改装后价值增加
}
int MostExpensiveCar(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;
}
友元类
다른 클래스 B가 자신의 친구를 선언 할 수있는 클래스의 private 멤버는 클래스 B의 모든 멤버 함수는 클래스 A의 객체에 액세스 할 수있는 것
운명의 관계는 상속 만 클래스를 부여 할 수 없습니다
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;
}