【发布时间】:2019-12-27 15:40:24
【问题描述】:
在 Meeting C++ 2019 上,Jon Kalb 发表了关于模板技术的演讲并提到了策略类。来源见这里:https://youtu.be/MLV4IVc4SwI?t=1815
有问题的有趣代码 sn-p 是:
template<class T, class CheckingPolicy>
struct MyContainer : private CheckingPolicy
{
...
}
我经常看到这种类型的设计,我想知道这里的继承是否比组合有任何真正的优势。以我个人的经验,我听说过很多关于优先组合胜过继承范式。所以我编写代码的方式会更像这样:
template<class T, class CheckingPolicy>
struct MyContainer
{
CheckingPolicy policy;
...
}
不会涉及任何虚函数。不过,如果您能分享一些见解,我将不胜感激。我会对内存布局的差异及其影响特别感兴趣。如果CheckingPolicy 没有数据成员,而只有check 方法或重载的调用运算符,会有什么不同吗?
【问题讨论】:
标签: c++ templates inheritance policy-based-design