2012-02-07 84 views
3

而当私有继承必须使用而不是遏制,解释,这article的作者说以下内容:私有继承VS遏制

“我们需要之前构造使用的对象,或在摧毁它,另一个基地子对象。如果稍长对象的生命周期的问题,有没有办法把它比使用继承”

其他如果你想子对象A到子对象B之前建造和B之后破坏,是不够的声明在B之前,在封闭课堂上?换句话说,为什么我们不能在这种情况下使用遏制来达到相同的结果?

+0

如何在基类之前声明成员? – 2012-02-07 23:32:51

回答

8

我相信作者正在谈论基地子对象,而不是直接子对象。也就是说,如果您希望在构建类的其他基类之前构建类的某个成员,则可以使用私有继承。在这种情况下,使用私有继承将导致C++在其他基类之前初始化私有继承基类,前提是您已按照正确的顺序继承它们。例如,如果你正在做Derived类,希望有一个Subobject对象Derived,并从Base继承,但是你想要的Base之前初始化Subobject,你可以写

class Derived: private Subobject, public Base { 

} 

而且现在Subobject将被初始化在Base之前。

(也就是说,这是一个非常愚蠢的用例!)

希望这有助于!

+0

现在我明白了这一点。谢谢。 – Belloc 2012-02-07 23:35:10