What about explicitly invoking the base class function?
Yes, you can do that.
eg.
class Foo {
public:
Foo() { Foo::Func(); }
virtual void Funct() { /* do something */ }
}
But not that way, it would go like
struct Base
{
virtual void foo { ... }
};
struct Derived: Base
{
Derived()
{
Base::foo(); // Perhaps self-evident, calls Base::foo.
foo(); // Calls Derived::foo.
}
virtual void foo() { ... }
};
struct Derived2: Derived
{
virtual void foo() { ... }
};
Derived2 obj; // Derived constructor calls Base::foo
// and Derived::foo, not Derived2::foo.
Can member functions be accessed during construction for that matter?
Yes, but in the manner of porcupines making love: very carefully.