我最近遇到了一段代码,其中一个类是自己的朋友.正如我在不同论坛上所读到的,一个班级已经是他自己的朋友.所以我想知道是否有一个特定的原因,为什么人们想要明确地让自己成为一个阶级朋友.
另一个问题是,让一个班级成为自己的朋友的原因是什么?
也许有经验的人可以澄清这个话题.
这是代码示例,用于说明我的问题:
template < typename T> class Foo: public T { protected: template < typename U> friend class Foo; }
解决方法
确实让一个类成为自己的朋友是没有意义的,除非它是一个模板类.例如,以下代码是有意义的:
template <class T> class A { template<class U> friend class A; }
STL示例是std :: _ Ptr_base,它是std :: shared_ptr和std :: weak_ptr的基类.