继承基类的一部分

时间:2012-02-14 03:53:19

标签: c++ inheritance

我手头有以下问题。有一个类Foo和另一个名为Bar的类,它是类Foo的成员。

class Bar{
private:
    some stuff;
public:
    Bar();
    some other_stuff;
};
class Foo{
private:
    Bar bar;
public:
    Foo(); // Initialize the bar object here in the constructor
    void doSomethingWithBar();
};

现在两个班都很大!对于某些应用程序,我需要对FooBar进行更改,因此有Foo_DerivedBar_Derived类。

class Bar_Derived: public Bar{
private:
    some NEW_stuff;
public:
    Bar_Derived();
    some New_other_stuff;
};
class Foo_Derived: public Foo{
private:
    Bar_Derived bar;
public:
    Foo_Derived(); 
    void doSomethingWithBar();
};

据我了解继承,一旦调用了Foo_Derived(),就会调用Foo的基类构造函数来初始化基类中的bar对象(Bar类型。我应该怎么做以便使用派生类中的bar对象?(类型为Bar_Derived)。我只需要基类(Foo)来初始化bar对象的基本部分并完成其余的工作我自己Foo_Derived课。这甚至可能吗?

很抱歉,问题不明确。我真的很困惑自己!

1 个答案:

答案 0 :(得分:0)

基类初始化程序只会初始化对象的基本部分,因为这就是它所知道的全部内容。类初始化程序应该只初始化那些总是需要为该类的所有成员初始化的东西。

Foo_Derived的构造函数中,您可以使用初始化列表来指定要调用的Bar_Derived构造函数。 Bar_Derived构造函数可以使用它希望的任何Bar构造函数。如果您没有Bar_Derived构造函数以您希望的方式构造Foo_Derived::bar,则应编写一个或重新考虑如何设置层次结构。