在C++中,我想不出有哪种情况下我想从基类继承私有/受保护:
class Base;
class Derived1 : private Base;
class Derived2 : protected Base;
它真的有用吗?
发布于 2008-12-17 12:36:30
Private在相当多的情况下可能很有用。其中只有一个是策略:
Is partial class template specialization the answer to this design problem?。
另一种有用的情况是禁止复制和赋值:
struct noncopyable {
private:
noncopyable(noncopyable const&);
noncopyable & operator=(noncopyable const&);
};
class my_noncopyable_type : noncopyable {
// ...
};
因为我们不希望用户有一个指向我们的对象的noncopyable*
类型的指针,所以我们私有地派生。这不仅适用于不可复制类,也适用于许多其他此类类(策略是最常见的)。
发布于 2008-12-17 14:21:14
公共继承模型是-A。
非公共继承模型是-IMPLEMENTED-IN-TERMS OF。
包含模型HAS-A,等同于is -IMPLEMENTED-IN-TERMS OF。
Sutter on the topic。他解释了什么时候你会选择非公共继承而不是容器来实现细节。
发布于 2008-12-17 16:01:34
例如,当您想要重用实现,而不是类的接口并覆盖它的虚函数时。
https://stackoverflow.com/questions/374399
复制相似问题