class Base{
public:
Base(int val):_id(val){};
int _id;
};
class Derived : Base {
public:
Derived(int val):Base(_id+val){};
};
int main(){
Derived d(60);
}
为什么不报错?基类仍未构建,但我可以使用“_id”?
谢谢
最佳答案
一个更简单的示例:int x = x + 1;
向您展示了 c++ 编译器不跟踪变量初始化。
在您的示例中,_id 存在于内存中(它有一个地址),但从未被初始化。但是,由于编译器不跟踪,所以没有错误。
关于c++ - 继承,调用基类构造器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3308565/