【摘要】:相对于友元来说,类没有任何的秘密,不存在封装性。友元函数在类体内说明时前面必须添加关键字friend,用于标识以区别其他的函数,但是现实不允许使用该关键字。一个函数可以是多个类的友元函数,只需要在各个类中分别声明。友元函数的调用与一般函数的调用方式和原理一致。使用友元方式,输出Internet类内的私有数据信息。
即存在一个普通函数,它是类的朋友,它可以直接访问类的私有成员。实际的意思就是类对于它是公开的,它可以随便使用类的所有成员。就像是日常中,你可以允许你认可的朋友知道你的所有隐私一样。相对于友元来说,类没有任何的秘密,不存在封装性。
为了体现这种特殊性,需要在类的定义中加以声明,声明时只需在函数的名称前加上关键字friend,其格式如下:
friend类型函数名(形式参数);
友元函数的声明可以放在类的私有部分,也可以放在公有部分,它们是没有区别的,都说明是该类的一个友元函数。
友元函数为非成员函数,在类体内说明在类体外实现,实现时前面不能加关键字friend,也不需要加类名。
友元函数在类体内说明时前面必须添加关键字friend,用于标识以区别其他的函数,但是现实不允许使用该关键字。(www.daowen.com)
一个函数可以是多个类的友元函数,只需要在各个类中分别声明。其意义就是它可以访问这些类的所有成员。
友元函数的调用与一般函数的调用方式和原理一致。
【例4.4】使用友元方式,输出Internet类内的私有数据信息。
上面的代码通过友元函数的定义,我们成功地访问到了a对象的私有成员name,友元函数并不能看作是类的成员函数,它只是个被声明为类友元的普通函数,所以在类外部函数的定义部分不能够写成void Internet::Show N(Internet&obj),这一点要注意。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关面向对象程序设计的文章