因为显示器类存储的朋友,任何显示的成员使用的存储类对象可以直接访问存储的私有成员。这是一个简单的程序,显示使用上面的类:
1
2
3
4
5
6
7
8
9
|
int
main() { Storage
cStorage(5, 6.7); Display
cDisplay( false ); cDisplay.DisplayItem(cStorage); return
0; |
这个程序产生以下结果:
6.7 5
一个朋友类一些额外的注释。首先,尽管显示存储的一个朋友,显示并没有直接接触到这个指针存储对象。第二,因为显示存储的朋友,这并不意味着存储也显示一个朋友。如果你想要两类是彼此的朋友,都必须申报的其他朋友一样。最后,如果类A是B的一个朋友,和B是C的一个朋友,这并不意味着是一个朋友
当使用友元函数和类的小心,因为它允许朋友函数或类违反封装。如果类变化的细节,细节的朋友也将被迫改变。因此,限制你的朋友使用函数和类的最小。
做一个函数的一些类朋友意味着函数可以访问类的私有成员变量(尽管这个功能不是类的成员)。以上的湿度/天气的例子显示了一个例子:printweather()运用湿度和天气的私有成员(它通常无法访问,因为他们是私有的)。然而,它是允许这样做的因为它已经交了一个朋友。它是强制性的声明一个函数(这是需要友元函数)在类本身?
假设有一个类命名的乐趣。它有一些私人和公共元素。现在我想要一个函数调用一些有乐趣的朋友。因此,它是要宣布一些有趣的私人或公共部门?或者可以声明和定义它完全外部类前缀的朋友。