这些建议boost::pointer_container建议从boost :: noncopyable派生ABCs,以防止在层次结构中进一步切片。除了上面提到的优点之外,我有理由不遵循这个建议吗?
答案 0 :(得分:5)
有一种称为“空基本优化”的东西,它会阻止派生类在从没有非静态数据成员且没有虚函数(没有vtable)的基类派生时增长。但是,Visual C ++只为第一个基类实现了这种优化(如果我没记错的话,这是最低标准要求)。因此,如果您想从两个空基类派生您的类,您将在::boost::noncopyable
上浪费empy base optimization。因此,在这种情况下显式编写已删除的构造函数/赋值运算符会更好。