(1)友元介绍
友元是一种允许非类成员函数访问类的非公有成员的一种机制,通过友元机制,可以在普通文件中访问类对象的私有成员变量。分为友元函数和友元类
(2)友元函数
友元函数在类作用域外定义,但它需要在类体中进行说明
格式:friend 类名 友元函数名(参数表)
友元函数的注意事项:
1.友元函数可以访问类中的所有成员(公有的,私有的,保护的)
2.友元函数不受类中的访问权限关键字限制,可以把它放在类的公有,私有,保护部分都可以
3.友元函数不属于类,不能用对象调用的方法访问
4.友元函数破坏了封装性,尽量少用
目的:提高了程序的运行效率(可以不再通过类中的接口函数来访问类属性1)
(3)友元类
友元关系是单向的,不能被传递,不能被继承
=======================什么是友元类=======================
当一个类B成为了另外一个类A的“朋友”时,那么类A的私有和保护的数据成员就可以被类B访问。我们就把类B叫做类A的友元。
=======================友元类能做什么=======================
友元类可以通过自己的方法来访问把它当做朋友的那个类的所有成员。但是我们应该注意的是,我们把类B设置成了类A的友元类,但是这并不会是类A成为类B的友元。说白了就是:甲愿意把甲的秘密告诉乙,但是乙不见得愿意把乙自己的秘密告诉甲。
=======================友元类的声明方法和其用法=======================
声明友元类的方法其实很简单,只要我们在类A的成员列表中写下如下语句:
friend class B; |
这样一来,类B就被声明成了类A的友元。注意,类B虽然是类A的友元,但是两者之间不存在继承关系