友元函数和友元类

来源:互联网 发布:普通话水平考试软件 编辑:程序博客网 时间:2024/05/17 03:39
18、友元函数和友元类
一个类中可以有public,protected,private三种属性的成员,通过对象可以访问public成员。只有本类中的函数可以访问本类的private成员,现在,将来介绍另外一种情况-----有元(friend)
借助有元可以使得其他类中的成员函数以及全局范围内的函数访问当前类的private成员



b.有元函数
在当前类以外定义的,不属于当前类的函数也可以在类中声明,但要在前面加friend关键字,友元函数可以是不属于任何类的非成员函数(注意普通函数使用成员变量时需要声明哪个类中的成员变量),也可以是其他类的成员函数。


c.友元函数可以访问当前类中的所有成员,包括public,protected,private属性的


d.将其他类的成员函数声明为友元函数
friend函数不仅可以是全局函数(非成员函数),还可以是另外一个类的成员函数。






19、有元类
友元类的所有成员函数都是另一个类的有元函数,都可以访问另一个类中的隐藏信息(包括私有成员和保护成员)


a.当希望一个类可以存取另一个类的私有成员时,可以将该类声明为另一类的友元类,定义友元类的语句格式如下:
friend class类名:
类名必须是程序中已经定义过的类
列如:


class A
{


.....


public :
friend  class B;
.....






}
经过以上说明:类B的所有成员函数都是类A的有元函数,即存取类A 的私有成员和保护成员


使用有元类时应注意:


(1)有元关系不能继承
(2)有元关系是单向的,不具有交换性。
(3)有缘关系不具有传递性





























































原创粉丝点击