0
鉴于这一情况:_beginthread在父类的构造
class A {};
class B : A;
B b;
如果class A
默认的构造函数使用_beginthread
一个线程,有可能是该线程开始之前class B
构造完成例执行?
鉴于这一情况:_beginthread在父类的构造
class A {};
class B : A;
B b;
如果class A
默认的构造函数使用_beginthread
一个线程,有可能是该线程开始之前class B
构造完成例执行?
该线程肯定会被创建,因为A
的构造函数在B
的构造函数开始执行之前完全执行。但是,该线程可能启动,也可能不启动:这取决于线程的安排方式以及创建线程后在构造函数中执行的操作。当然可能已经开始。
在那之后,如果线程'可以'在A()期间启动,我假设B中的虚拟函数必须在A()被调用之前注册? – Nicholas 2011-03-28 04:49:15
@Nicholas:在'A()'期间,对象的动态类型是'A',而不是'B'。您将无法在新线程的构造函数中调用“_beginthread”对象上的任何虚函数。 – Puppy 2011-03-28 04:59:34
@尼古拉斯:基本上,@DeadMG说。如果你有一个在'A'中声明的虚拟函数,那么'A'中的那个函数将被调用,而不是'B'中的重载。 – 2011-03-28 05:02:07