继承中出现奇怪的意外结果

Bizarre unexpected result in inheritance

本文关键字:意外 结果 继承      更新时间:2023-10-16

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

您的错误在这里:

A(int x) {
    x = a;
}

我相信你希望它是:

A(int x) {
    a = x;
}