我正在修改一些以以下代码开头的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 ++程序员,这非常令人困惑和艰巨。
为什么子类会将其超类作为朋友类?
是什么意思:
(a)
class BBBB : public CCCC
,以及(b)
BBBB() {}
后跟(c)
virtual ~BBBB(){}
,在这种情况下?我已经看过以下SO答案:
Structuring classes with multiple inheritance
Why do we need virtual functions in C++?
最佳答案
首先,我将自己研究BBBB
和CCCC
。
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
。