从noncopyable派生AbstractBaseClasses(ABCs)有缺点吗?

时间:2017-08-14 14:23:37

标签: c++ boost

这些建议boost::pointer_container建议从boost :: noncopyable派生ABCs,以防止在层次结构中进一步切片。除了上面提到的优点之外,我有理由不遵循这个建议吗?

1 个答案:

答案 0 :(得分:5)

有一种称为“空基本优化”的东西,它会阻止派生类在从没有非静态数据成员且没有虚函数(没有vtable)的基类派生时增长。但是,Visual C ++只为第一个基类实现了这种优化(如果我没记错的话,这是最低标准要求)。因此,如果您想从两个空基类派生您的类,您将在::boost::noncopyable上浪费empy base optimization。因此,在这种情况下显式编写已删除的构造函数/赋值运算符会更好。