我最近发现了一段 C++ 代码,其中一个类与自身成为友元。正如我在不同论坛上读到的那样,一个类(class)已经是自己的 friend 。所以我想知道是否有一个特定的原因可以明确地让一个类(class)成为自己的 friend 。
另一个问题是,为什么要让一个类成为它自己的 friend ?
也许有很多经验的人可以澄清这个话题。
下面是代码示例,用于说明我的问题:
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;
}
std::_Ptr_base
是一个 STL 示例,它是 std::shared_ptr
和 std::weak_ptr
的基类。
关于c++ - 模板类友元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25182550/