如何解释嵌套继承 class 结构?

How to interpret a nested inheritance class structure?

我正在修改一些以以下代码开头的 C++ 代码:

class AAAA {
public:
    class BBBB : public CCCC {   // CCCC from include CCCC.h
        friend class AAAA;
        typedef ... ;

    public:
        BBBB() {}
        BBBB(AAAA& thething, uint8_t a = 1) {
           init(&thething, a);
        }
        virtual ~BBBB(){}
//...
}

然而,作为非专业的C++程序员,这是非常令人困惑和望而生畏的。

为什么一个子class会有它的超级class作为朋友class?

什么意思:

(a) class BBBB : public CCCC,以及
(b) BBBB() {} 后跟
(c) virtual ~BBBB(){},在这种情况下?


我已经看过以下 SO 答案:

首先,我会自己看一下BBBBCCCC

class BBBB : public CCCC {   // CCCC from include CCCC.h
    friend class AAAA;
    typedef ... ;

public:
    BBBB() {}
    BBBB(AAAA& thething, uint8_t a = 1) {
       init(&thething, a);
    }
    virtual ~BBBB(){}
}

BBBB 是一个非常标准的 class,派生自 CCCC。唯一不寻常的是 friend class AAAA,它允许 AAAA 中的方法访问 BBBB.

中的私有(和受保护)方法和字段

BBBB 嵌套在 AAAA 中这一事实意味着要使用 BBBB,您必须使用 AAAA::BBBB b; 访问它,并且 BBBB 可以访问 AAAA.

中的私有(和受保护)方法和字段

Why would a subclass have its super class as a friend class?
What is the meaning of:
(a) class BBBB : public CCCC, and
(b) BBBB() {} followed by
(c) virtual ~BBBB(){}, in this case?

AAAA 不是 BBBBsuper class,而是 包围 class 。见上文。

(a)表示BBBB继承自CCCC。 (b) 是默认构造函数。 (c) 是析构函数,对于使用继承的classes,建议将析构函数设为virtual.