Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 类构造函数初始化?_C++_Constructor - Fatal编程技术网

C++ 类构造函数初始化?

C++ 类构造函数初始化?,c++,constructor,C++,Constructor,我正在努力理解以下代码。(我正在学习C++) 我在理解ui(新的DefaultUI)部分方面有点困难。 据我所知,在执行DefaultDevice()构造函数之前,这是初始化的一部分。 然后,根据我的理解,它将使用新的DefaultUI参数调用ReocoveryUI构造函数。但是,RecoveryUI类没有任何具有此类参数的构造函数。(很抱歉没有提出RecoveryUI类。它太长了:(如果有人感兴趣,它是Android开源代码) 那么这个“新的DefaultUI”做什么呢?如果这是一个有效的工作

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

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


那么这个“新的DefaultUI”做什么呢?

如果这是一个有效的工作代码,那么
RecoveryUI
似乎是
DefaultUI
的基类

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


因此,
ui
指向它的子对象。

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

尝试阅读一本好的C++编程书。它们将在几分钟内解释得更好。此外,用<代码> G++-WalthG/<代码>编译,并在代码中一步一步地使用调试器<代码> GDB < /C>。因此,UI(新Debug)创建了一个恢复符对象或Debug TUI对象?如果是UI(new Debug()),我可以看到它正在将DefaultUI对象传递给RecoveryUI构造函数…它创建
DefaultUI
对象,但将其作为
RecoveryUI
@Todd
新建DefaultUI
创建一个
DefaultUI
并返回一个指向
DefaultUI
的指针,然后使用该地址初始化
ui
,因此最终得到一个poin点击
RecoveryUI
指向
DefaultUI
对象..@juanchopanza好的,现在对我来说很有意义。非常感谢!
class DefaultDevice : public Device {
  public:
    DefaultDevice() :
      ui(new DefaultUI) {
    }
  private:
    RecoveryUI* ui;
};
class DefaultUI : public ScreenRecoveryUI {
 ...
}