当我在C++中派生一个类时,它是否创建了一个基类对象并将其作为我的成员变量存储在派生类中?

Sul*_*lla 2 c++ oop inheritance qt

假设我创建了一个派生类,如下所示,

    class CHIProjectData : public QObject 
{ 
CHIProjectData(QMap<QString,QString> aProjectData,
                           CHIMetaData* apMetaData = 0,
                           QObject* parent = 0); 
    private:
            QMap<QString,QString> m_strProjectData;
            CHIAkmMetaData* m_pMetaData; 
};
Run Code Online (Sandbox Code Playgroud)

我实施像,

CHIProjectData::CHIProjectData(QMap<QString,QString> aProjectData,
                               CHIMetaData* apMetaData,
                               QObject* aParent)
    :m_strProjectData(aProjectData),
    m_pMetaData(apMetaData),
    QObject(aParent)
{

}
Run Code Online (Sandbox Code Playgroud)

我知道我在构造函数中启动成员变量m_strProjectData,m_pMetaData.但最后一部分"QObject(aParent)"做了什么?它是否创建了基类对象并将其视为成员变量?

Joh*_*ing 6

QObject(aParent)QObject使用aParent参数调用的构造函数. QObject在这种情况下,它不是成员变量.它可能看起来像一个微妙的点,但它是一个重要的点,因为您访问子对象的属性和方法的方式需要不同于成员变量的语法.

这是一个类比,试图理解子对象和成员变量之间的区别.

在电影"蝙蝠侠:黑暗的夜晚"中,有一个场景,蝙蝠侠正在追逐他车里的坏人.但是汽车变得破损和无法使用,他必须逃脱.在这一点上,蝙蝠侠按下一个按钮,汽车的一部分从其他部分上卸下,成为一辆摩托车.这有点像子对象.这辆车摩托车.

现在考虑一下RV牵引较小型车辆的情况,这种车辆经常出现在美国的高速公路上.在这种情况下,RV 具有车辆.车辆是RV的成员变量.

  • 向上投票是一种类似于蝙蝠侠电影的投票. (2认同)