在下面的代码中,我希望得到 5 的输出,但我却得到了任意垃圾。为什么 x 没有设置为 5?当我声明派生类对象并将x的值设置为5时,构造函数不会被调用吗?
#include <iostream>
using namespace std;
class Base{
public:
int x;
Base(){
}
Base(int arg)
{
x = arg;
}
};
class Derived: public Base{
public:
Derived():Base(5){
}
};
int main() {
Base obj2;
Derived obj1;
cout << obj2.x;
return 0;
}
最佳答案
在您的示例中,您没有将任何值传递给 obj2
构造函数,因此您的 x
成员仍未初始化。
请记住,obj1
和 obj2
不共享任何成员,它们是独立的、断开连接的实例。
关于c++ - 如何将参数传递给 C++ 中的基类构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45221998/