C++ 多态之继承4-派生类的构造函数以及初始化

之前的两篇文章,我们已经了解了C++中继承的一些基本知识,也探索了初始化派生类的次序。本文主要是更深入的了解构造函数所扮演的角色(初始化一个派生类时)。我们继续沿用上篇文章的例子。

class Base
{
public:
    int m_nValue;
 
    Base(int nValue=0)
        : m_nValue(nValue)
    {
    }
};
 
class Derived: public Base
{
public:
    double m_dValue;
 
    Derived(double dValue=0.0)
        : m_dValue(dValue)
    {
    }
};

初始化非派生类时,构造函数只需要关心它自己的成员。例如,

int main()
{
    Base cBase(5); // use Base(int) constructor
 
    return 0;
}
当cBase被实例化时,发生如下事件:

1.为cBase预留内存

2.合适的Base构造函数被调用

3.初始化列表对变量进行初始化

4.执行构造函数的函数体

5.从调用出返回

这个过程非常的直观。但是换成初始化一个派生类时,事情变得稍微复杂点:

int main()
{
    Derived cDerived(1.3); // use Derived(double) constructor
 
    return 0;
}
当cDerived被实例化时,发生了如下事情:

1.为cDerived预留足够的内存(包括Base部分以及Derived部分)

2.合适的派生类构造函数被调用

3.Base对象被首先构造通过合适的Base构造函数

4.初始化列表对变量进行初始化

5.执行构造函数的函数体

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值