构造函数中的超类的c ++ init成员

时间:2012-10-19 22:59:41

标签: c++ constructor initialization member superclass

我不明白为什么我的会员没有初始化。我有这样的事情:

class A
{
  public:
    A() {member = 0;}
    int getMember() {return member;}
  protected:
    int member;
}

class B : public A
{
  public:
    B() : A() {member = 10;}
}

当我尝试从B获取成员的值时,它始终为0。 我在这里想念什么?

谢谢!

编辑:Ctor现已上市。

1 个答案:

答案 0 :(得分:3)

我尝试了两件事,他们都给出了预期的结果:

class A
{
  public:
    A() {member = 0;}
    int getMember() {return member;}
  protected:
    int member;
};

class B : public A
{
public:
    B() : A() {member = 10;}
};

int main() {
    A* a = new B();
    cout << a->getMember() << endl;
    B b;
    cout << b.getMember() << endl;
    return 0;
}

返回

output:
10
10

您可以在http://ideone.com/FArIAC

查看代码