C++ 遗传中奇怪的意外结果

C++ 遗传中奇怪的意外结果,c++,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 { i

非常简单的程序。类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

十,

您的错误如下:

A(int x) {
    x = a;
}
我相信你希望这样:

A(int x) {
    a = x;
}

如果使用构造函数初始化列表,就不会发生这种情况。它与继承无关。你有什么特别的理由需要私人继承吗?公共是标准标志,但私人增加了封装性,因此可以认为是更好的实践。