最近,我遇到了一段C++代码,其中一个类成为了自己的 friend 。正如我在其他论坛上所读到的那样,一个类已经成为了自己的 friend 。所以我想知道是否有一个特定的原因导致人们想要明确地与自己成为类(class) friend 。

另一个问题是,让一个类(class)成为自己的 friend 的原因是什么?

也许有很多经验的人可以澄清这个话题。

这是代码示例,以说明我的问题:

template < typename T>
class Foo: public T
{
protected:
   template < typename U>
   friend class Foo;
}

最佳答案

确实没有必要让一个类成为自己的 friend ,除非它是模板类。例如,以下代码很有意义:

template <class T>
class A
{
    template<class U>
    friend class A;
}

一个STL示例是std::_Ptr_base,它是std::shared_ptrstd::weak_ptr的基类。

关于c++ - 模板类友元,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25182550/

10-16 05:08