继承时如何构建派生类的变量?



继承时,基类中的变量是否会复制到派生类中? 子类的体系结构如何?

{
public:
int m_id;
Base(int id=0)
: m_id(id)
{
}
int getId() const { return m_id; }
};
class Derived: public Base
{
public:
double m_cost;
Derived(double cost=0.0)
: m_cost(cost)
{
}
double getCost() const { return m_cost; }
};

m_id是否会被复制到派生对象实例中?

派生类(Derived(不是严格意义上的基类(Base(。Derived继承自Base因此BaseDerived的一部分。考虑使用新方法和新成员扩展DerivedBase

在您的示例中,Base有一个默认构造函数,因为第一个参数是可选参数(Base(int id=0),您可以在没有任何参数的情况下调用构造函数来id设置为0(。

当你使用继承时,Derived必须始终在Derived的构造函数中调用Base的构造函数,然后再执行任何其他操作(以确保Base的变量被初始化(。但是,由于Base有一个默认构造函数,因此编译器会神奇地将其设置为可选。

如果要从Derived的构造函数调用特定Base的构造函数,可以执行以下操作:

Derived(double cost=0.0) : Base(1 /* or whatever you want it to be */)
{
m_cost = cost;
}

最新更新