首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解释嵌套继承类结构?

如何解释嵌套继承类结构?
EN

Stack Overflow用户
提问于 2019-07-25 12:11:43
回答 1查看 72关注 0票数 1

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

代码语言:javascript
复制
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++程序员,这是非常令人困惑和令人生畏的。

为什么子类会把它的超类作为朋友类呢?

以下的意思是:

(a) class BBBB : public CCCC

(b) BBBB() {}紧随其后

(c) virtual ~BBBB(){},在这种情况下?

我已看过以下答案:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-25 12:19:52

首先,我会自己看看BBBBCCCC

代码语言:javascript
复制
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是一个非常标准的类,它来自于CCCC。唯一不寻常的是friend class AAAA,它允许AAAA中的方法访问BBBB中的私有(和受保护的)方法和字段。

BBBB是嵌套在AAAA中的,这意味着要使用BBBB,必须使用AAAA::BBBB b;访问它,并且BBBB可以访问AAAA中的私有(和受保护的)方法和字段。

为什么子类会把它的超类作为朋友类呢? 以下的意思是: (a) class BBBB : public CCCC和 (b) BBBB() {}紧随其后 (c) virtual ~BBBB(){},在这种情况下?

AAAA不是BBBB的超类,而是封闭类。请参见上面的。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57201693

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档