2012-02-07 92 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