在C++中,如果我有一個類Base
,它是一個私有基類Derived
但Base
沒有虛函數,它會更乾淨,而不是替代繼承與封裝類Encapsulate
?我想在這種情況下繼承的唯一好處是可以直接在派生類中訪問基類,而不是通過memberVariable
。其中一種或其他做法是否被認爲更好,還是更多是個人風格問題?在沒有虛擬時應該使用私有繼承嗎?
class Base {
public:
void privateWork();
// No virtual member functions here.
};
class Derived : Base {
public:
void doSomething() {
privateWork();
}
};
class Encapsulate {
Base memberVariable;
public:
void doSomething() {
memberVariable.privateWork()
}
};
將GoF設計模式拋出窗口,並開始編碼... :) – Gigi
難道你不應該有至少一個虛擬析構函數嗎? –
@LuchianGrigore:如果繼承是私有的,那麼無論如何您都無法通過基指針銷燬派生。所以我會說不一定。 –