繁体   English   中英

从派生构造函数调用基类方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM