如何解释嵌套继承 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 答案:
- 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
是一个非常标准的 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
不是 BBBB
的 super class,而是 包围 class 。见上文。
(a)表示BBBB
继承自CCCC
。 (b) 是默认构造函数。 (c) 是析构函数,对于使用继承的classes,建议将析构函数设为virtual
.
我正在修改一些以以下代码开头的 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 答案:
- 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
是一个非常标准的 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
不是 BBBB
的 super class,而是 包围 class 。见上文。
(a)表示BBBB
继承自CCCC
。 (b) 是默认构造函数。 (c) 是析构函数,对于使用继承的classes,建议将析构函数设为virtual
.