【发布时间】:2014-06-10 00:47:57
【问题描述】:
我有以下场景:
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()"); }
};
我通常知道如果有人在派生类上调用 virt,则将调用 Derived::virt()。但是在这里,如果在父构造函数中 Base 处于休眠状态时调用了 callBase 函数,会调用哪个函数呢? Base::virt() 还是 Derived::virt()?
谢谢
【问题讨论】:
标签: c++ constructor callback virtual asynccallback