- 一个类的友元函数可以访问该类的私有成员
class CCar;
class Driver{
public:
void ModifyCar(CCar * pCar);//改装汽车
};
class CCar{
private:
tin price;
friend int MostExpensoveCar(CCar cars[],int total);
friend void CDriver::ModifyCar(CCar * pCar);
};
void CDriver::ModifyCar(CCar * pCar)
{
PCar->prive +=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(){
}
- 将一个类的成员函数->另一个类的友元
class B{
public:
void function();
};
class A{
friend void B::function();
};
- 友元类
- A 是 B的友元类 -> A的成员函数可以访问 B的私有成员
class CCar{
private:
int price;
friend class Driver;//声明 Driver 为友元类
};
class CDriver{
public:
CCar myCar;
void ModifyCar(){ //改装汽车
myCar.price +=1000;//CDriver是CCar的友元类->可以访问其私有成员
}
};
***注意:友元类之间的关系不能传递,不能继承 ***
- 举例:
- B 是 A 的友元,C 是 B 的友元,C 不是 A 的友元。
- A 是 B 的友元,不代表 B 是 A 的友元。
网友评论