首页 >后端开发 >C++ >C标准库可以通过继承来扩展吗?

C标准库可以通过继承来扩展吗?

Barbara Streisand
Barbara Streisand原创
2024-11-02 12:13:02186浏览

Can the C   Standard Library Be Extended Through Inheritance?

通过继承扩展标准库

人们普遍认为 C 标准库通常不打算通过继承来扩展。然而,经过仔细检查,很明显该库的某些方面确实是为此目的而设计的。

标准库中的预期扩展点

一个这样的组件是 std::Exception 类。它明确旨在继承,允许创建自定义异常类型。这样做时,应考虑某些准则:

  • 虚拟方法:用于继承的类应该具有 std::exception 拥有的虚拟方法。
  • 友元声明:过多的友元声明可能表明封装问题,建议反对继承。
  • 模板:模板通过专门化提供灵活性,通常减少继承的需要。
  • 策略机制:从具有基于策略的机制(例如 std::char_traits)的类继承通常是不可取的。

扩展时的接口一致性

作为最佳实践,从标准库类继承时,遵守 ISO 标准中定义的接口非常重要。这意味着,例如,继承的异常类的 What() 成员函数应该返回窄文本字符串 (NTBS),以确保与期望 std::exception 的函数的兼容性。虽然使用带有不符合标准的 What() 函数的异常类的程序在技术上仍然可以编译,但它偏离了预期目的并引入了潜在的兼容性问题。

以上是C标准库可以通过继承来扩展吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn