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.
Yes. Just watch out for
virtualfunctions. If an class derived fromDerivedoverrides a virtual function, while constructingDerivedas a sub-object of that further derived class, the dynamic type always isDerived, so no virtual functions overridden in further derived classes are called. (The same goes for the destructor, BTW.)Your reasoning is right.