защищенное наследование

Почему защищенное и частное наследование определено и предложено? Я понимаю некоторые случаи, частное наследование могло использоваться, но оно не рекомендуется. Как насчет защищенного наследования?

Кто-либо может предложить мне ситуацию, в которой защищенное наследование является выбором?

Я редко вижу это.

Большое спасибо!

10
задан skydoor 19 January 2010 в 02:24
поделиться

4 ответа

Частное наследование обычно используется для смешин, - где люди наследуют, чтобы получить функциональность от базового класса, а не из-за «IS-A» наследство.

Защищенное наследование также может быть использовано для смешин, где смешанные функциональные возможности также должны быть доступны для пониженных классов.

6
ответ дан 3 December 2019 в 22:37
поделиться

См. Использование Herb Sutter и злоупотребления наследования, часть 1 , которое также в его более исключительно C ++ книга.

3
ответ дан 3 December 2019 в 22:37
поделиться

Это ситуация, которую я бы использовал охраняемую наследование

базы -> Dervive1 -> Dervive2

  • Я не хочу, чтобы drevive1 быть замененным для базового класса
  • , я хочу использовать функциональные возможности в базе, а также разрешить Verive2, чтобы использовать его без разоблачения Функциональность к классам клиента
1
ответ дан 3 December 2019 в 22:37
поделиться

Я обычно не использую защищенное наследование. На самом деле, я обычно не использую частное наследование. Если что-то не удовлетворяет принципу замещения Лискова, то я не вижу причин использовать какое-либо наследство; а если оно удовлетворяет LSP, то вы используете public наследование.

Однако, язык различает между private и protected только с точки зрения класса (то есть код, использующий класс, не может отличить).

Вы должны использовать защищенное наследование, когда вы хотите, чтобы это была семантика , и вы должны использовать частное , когда вы не хотите, чтобы защищенное .

5
ответ дан 3 December 2019 в 22:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: