为什么应该避免从 std::string 派生
Scott Meyers 在他的《Effective C》一书中建议不要从 std::string 派生: :string 类,主要是因为它缺少虚拟析构函数。然而,这并不是避免此类继承的唯一原因。
定义继承标准
要充当适当的基类,类必须:
std::string 作为 Base Class
std::string 无法满足这些条件,原因如下:
此外,即使在继承只是为了可重用性的情况下,C 也缺乏阻止客户端创建的机制使用基类指针的派生类的对象。这可能违反了限制此类使用的预期目的。
违反继承的后果
忽略这些准则可能会导致代码:
综上所述,C 中的继承应保留用于多态情况,并且由于其设计限制和切片问题, std::string 不应用作基类。采用非成员函数或组合等替代方法可以促进惯用的 C 实践并确保代码的清晰度和可靠性。
以上是为什么你不应该从 C 中的 std::string 继承?的详细内容。更多信息请关注PHP中文网其他相关文章!