一、友元
在程序里,有些私有属性也想让类外特殊的一些函数或者类进行访问,就需要用到友元技术
友元的目的:
让一个函数或者类访问另一个类中私有成员
友元的关键字:
friend
友元的三种实现
- 全局函数做友元
- 类做友元
- 成员函数做友元
1、全局函数做友元
全局函数无法访问类中的私有属性(私有属性只能在类内访问)
若要使该全局函数可以访问私有属性,可以将该函数名复制到类内,并在开头加上friend关键字,结尾加上分号。即完成了全局函数做友元
2、友元类
目的:让一个类可以访问另一个类中的私有成员,
实现:
在一个类中添加代码friend class 类名;
如下图,这样GoodGay类即可访问Buliding中的私有属性
类外写成员函数
在类内声明
在类外写实现(要加上类)
3、成员函数做友元
目的:让GoodGay这个类下的成员函数visit可以访问Building中的私有成员
在Building类内加上 friend void GoodGay::visit();
(说明visit这个函数是Building的友元,而且是在GoodGay这个类下)