何时调用继承的构造函数代码

时间:2011-04-15 12:36:00

标签: c++ multithreading inheritance constructor c++builder

如果我的类的构造函数继承了另一个类的参数化构造函数,那么继承的构造函数代码是在我放在构造函数中的代码之前还是之后执行的?

例如:

TCurrentKillerThread::TCurrentKillerThread() : TThread(true){
  CurrentKillerMutex = CreateMutex(NULL,true,NULL); // protect thread 
  try {
     Write("Created Current Killer");
  } __finally {
    ReleaseMutex(CurrentKillerMutex);
  }
  Start();
}

TThread(true)之前的代码TCurrectKillerThread()会执行{{1}}吗?

4 个答案:

答案 0 :(得分:2)

是。父类始终在派生之前初始化。你没有继承构造函数 - 你正在调用它。

答案 1 :(得分:0)

是的,C ++构造从最低的基类到最大的基类。

答案 2 :(得分:0)

  

TThread(true)会在TCurrectKillerThread()中的代码之前执行吗?

是的,TThread(bool var){ .... }在实例化派生类对象之前执行TCurrentKillerThread(){ .... }。父类子对象的构造必须在C ++中的派生类子对象之前进行。

答案 3 :(得分:0)

当然,基类的构造函数在子类的构造函数之前执行,析构函数从子类执行到基类