«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Когда допустимо наследование от классов стандартной библиотеки C++?

Когда допустимо наследование от классов стандартной библиотеки C++?

Опубликовано 8 ноября 2024 г.
Просматривать:584

When is It Acceptable to Inherit from C   Standard Library Classes?

Расширение стандартной библиотеки C посредством наследования

Хотя часто считается, что наследование от классов стандартной библиотеки C нежелательно, существуют заметные исключения .

Идентифицируемые классы для наследования

Определение того, предназначен ли класс стандартной библиотеки для наследования, может оказаться сложной задачей. Однако следующие рекомендации могут дать некоторое представление:

  • Если класс имеет виртуальные методы, это возможный кандидат на наследование.
  • Чрезмерное количество объявлений «Friend» указывает на проблемы инкапсуляции, что делает наследование менее подходят.
  • Шаблоны следует рассматривать для специализации, а не для наследования.
  • Механизмы на основе политик, такие как std::char_traits, предполагают, что наследование не предусмотрено.

Требования к производным классам

При наследовании от классов стандартной библиотеки следует применять принцип замены Лискова (LSP). Наблюдаемое поведение, такое как функция What() в std::Exception, должно соответствовать базовому классу. В этом контексте соответствие стандарту вызывает меньше беспокойства, чем правильность.

Заключение

Хотя в самом стандарте отсутствуют четкие указания по расширению Стандартной библиотеки, крайне важно внимательно продумайте предполагаемое использование классов и разумно применяйте принципы наследования.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3