在《C++ Primer(第五版)》中关于这个话题的表述如下:
在新标准中,我们可以将模板类型参数声明为友元:
此处我们将用来实例化Bar的类型声明为友元。因此对于某个类型名Foo,Foo将成为Bar<Boo>的友元。。。。
光看上面的说明,估计好多人还是一头雾水,下面通过一个接近实际开发的例子来进一步说明。
应用举例
需求
我们希望设计一个对象计数器,希望可以满足如下需求:
使用一个计数器类实现对多数互不相关的类型的计数
希望可以自动防止计数器的误用
计数器类
如果去掉模板的部分,这个类就是一个简单的单例模式。比较特别的地方是:这个类的所有成员都声明为私有的