class Base {
public:
Base() {}
void Foo(int x) {...}
};
class Derived : public Base {
public:
Derived(int args) {
/* process args in some way */
Foo(result);
}
};
Is it allowed to call a method of the base class in the constructor of the derived class? I would imagine this is fine as the Base object should be fully constructed, but I wanted to check just in case.
Is it allowed to call a method of the base class in the constructor of the derived class?
Yes. Just watch out for virtual
functions. If an class derived from Derived
overrides a virtual function, while constructing Derived
as a sub-object of that further derived class, the dynamic type always is Derived
, so no virtual functions overridden in further derived classes are called. (The same goes for the destructor, BTW.)
I would imagine this is fine as the Base object should be fully constructed, but I wanted to check just in case.
Your reasoning is right.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With