I have the following scenario:
class Caller{
public:
Caller() {...}
void register(Base* b) {...}
void callBase() { b->virt()}
};
class Base {
public:
Base(Caller c) { println("Base::Base()"); c.register(this); sleep(30); }
virtual void virt() { println("Base::virt()"); }
};
class Derived : public Base {
public:
Derived() { println("Derived::Derived()"); }
virtual void virt() { println("Derived::virt()"); }
};
I know normally if someone calls virt on the derived class Derived::virt() will be called. But here, if the function callBase is called while Base is sleeping in the parent constructor, which function will be called? Base::virt() or Derived::virt()?
Thanks