我有一个关于在派生类的构造函数中初始化继承成员的问题。示例代码:
class A
{
public:
int m_int;
};
class B: public A
{
public:
B():m_int(0){}
};
这段代码给出了以下输出:
In constructor 'B::B()': Line 10: error: class 'B' does not have any field named 'm_int'
(参见http://codepad.org/tn1weFFP)
我猜为什么会发生这种情况?m_int
应该是B
的成员,而父类A
在B
中初始化m_int
时应该已经初始化了(因为父构造函数在继承类的成员初始化之前运行)。我的推理中哪里错了?这段代码到底发生了什么?
EDIT
:我知道初始化这个成员的其他可能性(基构造器或派生构造器中的赋值),但我想知道为什么我尝试的方式是非法的?一些特定的C++语言特性或类似特性?如果可能,请给我指出C++标准中的一段。
https://stackoverflow.com/questions/3984215
复制相似问题