[英]Calling base class method from derived constructor
class Base {
public:
Base() {}
void Foo(int x) {...}
};
class Derived : public Base {
public:
Derived(int args) {
/* process args in some way */
Foo(result);
}
};
是否允许在派生类的构造函数中调用基类的方法? 我认为这很好,因为Base对象应该完全构造,但我想检查以防万一。
是否允许在派生类的构造函数中调用基类的方法?
是。 请注意virtual
功能。 如果从Derived
的类重写虚函数,则在将Derived
构造为该进一步派生类的子对象时,动态类型始终为Derived
,因此不会调用在其他派生类中重写的虚函数。 (同样适用于析构函数,BTW。)
我认为这很好,因为Base对象应该完全构造,但我想检查以防万一。
你的推理是正确的。
有以下危险:
1.该方法被覆盖
2.该方法调用被覆盖的其他方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.