类构造函数初始化?

时间:2013-03-11 07:26:23

标签: c++ constructor

我正在尝试理解以下代码。(我正在学习C ++)

class DefaultDevice : public Device {
  public:
    DefaultDevice() :
      ui(new DefaultUI) {
    }
  private:
    RecoveryUI* ui;
};
class DefaultUI : public ScreenRecoveryUI {
 ...
}

我很难理解 ui(new DefaultUI)部分。 据我所知,它是执行DefaultDevice()构造函数之前初始化的一部分 然后,根据我的理解,它将使用 new DefaultUI 参数调用ReocoveryUI构造函数。但是,RecoveryUI类没有任何带有这种参数的构造函数。(抱歉没有构成RecoveryUI类。它太长了:(如果有人感兴趣,那就是Android开源代码)

那么这个'新的DefaultUI'做?

2 个答案:

答案 0 :(得分:0)

如果这是一个有效且有效的代码,RecoveryUI似乎是DefaultUI的基类。

ui(new DefaultUI)创建一个对象并将其分配给ui

因此,ui指向其子对象。

答案 1 :(得分:0)

它不是在之前运行,它是ctor的一部分。它被称为初始化列表,它用于初始化类的(非静态)成员变量。