protected
члены доступны производным классам. private
участники не являются.
Обычно (чаще всего) члены должны быть либо private
, либо public
. Редко и необычно требуется protected
член (правка) в хорошо спроектированной системе.
EDIT:
Может быть, мне стоит пояснить, почему члены protected
могут быть запахом кода.
Если производные классы имеют доступ к членам данных, которых нет у других классов, это может указывать на то, что базовый и производные классы слишком тесно связаны. Производные классы имеют доступ к состоянию базового класса, и, следовательно, состояние базового класса подвержено повреждению. Если бы это было не так, то также часто нет причин просто делать элементы данных public
.
Другие подробно остановились на этом.
Вот что говорит Страуструп в своем тексте:
Члены, объявленные защищенными, находятся далеко
более открыты для злоупотреблений, чем члены
объявлен частным Особенно,
объявление членов данных защищенными
обычно ошибка проектирования. размещение
значительные объемы данных в
общий класс для всех производных классов
использовать оставляет эти данные открытыми для
коррупция. Хуже, защищенные данные,
как общедоступные данные, не может быть легко
реструктурирован, потому что нет ничего хорошего
способ найти каждое использование. Таким образом,
защищенные данные становятся программным обеспечением
проблема обслуживания.
См. Также этот вопрос .