C++ 友员
接下来,我们准备为大家介绍"友员"
为什么要使用"友员"?原因是,我们希望在普通函数中可以直接访问类中的私有或保护的属性。
友员的特性:
(1)友员其实是类中所定义的一个方法,只是在方法定义的最前面添加了关键字friend。
(2)友员定义的位置可以在类中任何的位置,即可以在public区,也可以在protected或private区。
(3)友员方法的实现必须在类外进行。
友员定义的语法格式:
friend 类型关键字 方法名(参数类型 参数1,参数类型 参数2,...参数类型 参数n );
语法格式分析:
友员定义的格式与普通方法一样,只是在定义的最开始添加了friend关键字。
友员实现的语法格式:
类型关键字 方法名(参数类型 参数1,参数类型 参数2,...参数类型 参数n )
{
代码;
}
语法格式分析:
友员方法的实现与普通函数实现的格式是一样的。
接下来,我们结合例子作进一步的学习
例子:
class Person //定了一个描述人的类Person
{
private:
int x; //私有属性x
protected:
int y; //保护属性y
public:
char *Name; //名字属性
int Life; //生命属性
static int Count; //记录人数属性
friend void fn(); //友元方法fn
Person()
{
Life = 10;
Count = Count + 1; //每次定义一个象,就计数加1
}
~Person()
{
Life = 0;
Count = Count - 1; //对象生命周期结束时,就计数减1
}
}
int Person::Count = 0; //对静态属性Count分配内存空间并赋初值0;
void fn() //友元方法的实现
{
Person p1;
p1.x = 1; //正确,在友元的方法中可以通过p1对象访问私有属性x
p1.y = 2; //正确,在友元的方法中可以通过p1对象访问保护属性y
}
void test() //普通方法的实现
{
Person p1;
p1.x = 1; //错误,不是友元的方法,不可以在类外通过p1对象访问私有属性x
p1.y = 2; //错误,不是友元的方法,不可以在类外通过p1对象访问保护属性y
}
void main()
{
fn();
test();
}
通过上面的学习,相信大家对友元有了一个初步了解,但是,如何灵活地运用这个知识点呢?那么,我们就要通过下方的按钮进入到游戏中,然后,运用该知识点去完成任务,这样,才可以加深大家对该知识点的理解和运用,以及“尽快进入到编程的状态”。
要达到灵活运用,是需要通过不停地反复训练才可以做到,所以,不要停留在理论规则上面,快动起来吧!
(通过游戏模式学习与训练,需要在电脑上运行)