【发布时间】:2012-07-03 07:12:44
【问题描述】:
在 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 设计模式扔出窗外,开始编码...... :)
-
你不应该至少有一个虚拟析构函数吗?
-
@LuchianGrigore:如果继承是私有的,那么无论如何您都无法通过基指针销毁派生的。所以我会说不一定。
标签: c++ inheritance private encapsulation