【发布时间】:2012-10-10 14:49:34
【问题描述】:
我不明白为什么我的成员没有初始化。我有这样的事情:
class A
{
public:
A() {member = 0;}
int getMember() {return member;}
protected:
int member;
}
和
class B : public A
{
public:
B() : A() {member = 10;}
}
当我尝试从 B 获取 member 的值时,它始终为 0。 我在这里想念什么?
谢谢!
编辑:Ctor 现在是公开的。
【问题讨论】:
-
@chris:据我所知,这仍然会构造
B对象并将10分配给member。不过,如果不是,我希望能有所启发。 -
构造函数是私有的..所以我假设你不能有 new B();我有一段时间没学过 C++了。所以我可能是错的。
-
@LewsTherin:你是对的。这表明发布的代码不是真正的代码,在这种情况下,行为可能来自引用示例中未显示的方面。
-
显示更多代码。从这小部分,谁也说不出来,只是猜测。
-
这段代码,一旦你将 B() 公开,就可以正常工作,并按照你的预期去做。我假设您缺少的是代码中的其他地方;正如 Olaf 所说,没有更多代码我们无能为力。
标签: c++ constructor initialization member superclass