在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:如果继承是私有的,那么无论如何您都无法通过基指针销毁派生。所以我会说不一定。 –