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
 
     
     
     
    