C++ 遗传中奇怪的意外结果
非常简单的程序。类B继承了A,我试图打印两个数据成员,但由于某种原因,类A的数据成员A被打印为垃圾值,而不是实际值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
#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;
}
如果使用构造函数初始化列表,就不会发生这种情况。它与继承无关。你有什么特别的理由需要私人继承吗?公共是标准标志,但私人增加了封装性,因此可以认为是更好的实践。