gpt4 book ai didi

c++ - 调用基类构造函数与初始化子类中的成员变量

转载 作者:行者123 更新时间:2023-11-30 05:24:20 33 4
gpt4 key购买 nike

Parent 类是一个抽象类。这里的_isDone, _probParent类的protected变量,被Child继承>.

使用有什么区别:

Child::Child(int _classType) : Parent(false, 1.0f) 用于初始化 Parent 类的变量。

对比

Child::Child(int _classType) 
{
_isDone = false;
_prob = 1.0f;
}

我觉得使用第二种比使用第一种更容易。使用第一个的任何理由。

最佳答案

简答:第一个是初始化,第二个是赋值

第一个使用Parent 的构造函数初始化_isDone_prob。但是,当您使用第二个时,_isDone_prob 会使用 Parent 的默认构造函数进行初始化,然后为它们分配新值在 Child 构造函数的函数体中。

第一个更好,原因如下:

  1. 如果 Parent 没有默认构造函数,则第二个不能工作。
  2. 第一个更有效,尤其是当数据成员是一个“非常大”的对象时,其默认构造函数非常昂贵。由于第一个调用数据成员的默认构造函数,然后调用 operator= 分配一个新值,而第二个只是调用一个适当的构造函数。默认构造函数是多余的。
  3. 就我个人而言,我认为直接访问Parent 的数据成员不是一个好主意:ParentChild 之间的耦合增加>.

关于c++ - 调用基类构造函数与初始化子类中的成员变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38711146/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com