Friend class

一个类的友元类可以访问该类的非public成员,可以出现在该类的private、protected和public中任何一个地方。具体的方法就是在该类中声明某个类是该类的友元类,如下图所示:


Friend class_第1张图片

如上图所示,Remote就是TV的友元类。
一个类的友元类往往被看成是该类的一部分。从C++ Primer Plus所讲的例子来看,一个类的友元类往往负责对该类进行操作,它似乎提供了类似于该类的公有接口的性质,所以你可以看到一个友元类的成员一般都是public成员函数。
一个类的友元类与该类之间的关系既不是has-a的关系也不是is-a的关系,所以你不能使用public继承、private继承和containment设计方法。但是如果一个类与另一个类之间是一种控制与被控制的关系,那么控制的类可以声明为被控制类的友元类。
友元类可以起到保护本类私有成员和精简类体设计的作用。

你可能感兴趣的:(Friend class)