继承中奇怪的意外结果

时间:2015-03-24 20:30:20

标签: c++

非常简单的程序。 B类继承A和我试图打印两个数据成员,但A类的数据成员a被打印为垃圾值,而不是由于某种原因的实际值。

#include <iostream> 

using namespace std;

class A { 
    int a;
public:    
    A(int x) {
        x = a;
    }
    int getA() {
        return a;
    }
};

class B : private A {
    int b;
public:
    B(int x, int y) : A(y)  {
        b = x;
    }
    void print() {
        cout << getA() << endl << b << endl;
    }    
};

int main() {
    B b(10,20);
    b.print();

    return 0;
}

输出:

  

1627414140

     

10

1 个答案:

答案 0 :(得分:12)

您的错误在这里:

A(int x) {
    x = a;
}

我相信你希望这样:

A(int x) {
    a = x;
}