在Meeting C++ 2019上,Jon Kalb讲述了关于模板技术的内容,并提到了策略类。可以在此处查看来源:https://youtu.be/MLV4IVc4SwI?t=1815
有趣的代码片段如下:
template<class T, class CheckingPolicy>
struct MyContainer : private CheckingPolicy
{
...
}
我经常看到这种设计,不知道通过继承是否真的比组合有更大优势。从我的个人经验来看,我听说过很多关于“优先使用组合而非继承”的范式。所以我写代码的方式更像是这样:
template<class T, class CheckingPolicy>
struct MyContainer
{
CheckingPolicy policy;
...
}
这里不涉及任何虚拟函数。但是,如果你能分享一些见解,并让内容更加通俗易懂,我会非常感激。我尤其关注内存布局的差异及其影响。如果CheckingPolicy
没有数据成员,只有一个check
方法或重载的调用运算符,是否会有所不同?