首页 > 编程语言 > 详细

C++笔记13

时间:2020-02-10 13:34:01      阅读:90      评论:0      收藏:0      [点我收藏+]

友元

友元分为友元函数和友元类
1.友元函数
一个类的友元函数可以访问该类的私有成员,友元函数不是这个类成员函数。
这个友元函数可以是一个很普通的全局函数,这个类把这个函数声明为友元以后,这个函数就可以访问这个类的私有成员了
exp.

class CCar;//提前声明CCar类,以便后面的CDriver类的使用
class CDriver
{
public:
void ModifyCar(CCar * pCar);//改装汽车 如果是变量的话,应该在开头把CCar写完整
};
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;
}

可以将一个类的成员函数(包括构造函数析构函数)说明为另一个类的友元

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

2.友元类
如果A是B的友元类,那么A的成员函数可以访问B的私有成员
exp.

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;}

友元类之间的关系不能传递,不能继承
不能说你的朋友就是我的朋友
不能说A是B的友元,B是C的友元,A就是C的友元

C++笔记13

原文:https://www.cnblogs.com/AirBirdDD/p/12290229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!