类构造函数初始化

class constructor initialization?

本文关键字:初始化 构造函数      更新时间:2023-10-16

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

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

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

这个'new DefaultUI'是做什么的?

如果这是一个有效的和工作的代码,似乎RecoveryUIDefaultUI的基类。

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

所以,ui指向它的子对象

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