Тут узнал, что в плюсах private методы это не про visibility, а про accessibility. То есть, если есть базовый класс с private виртуальными функциями, то в классах потомках переопределять эти закрытые методы не то что можно, а нужно, так как такой подход считается предпочтительным при проектировании (паттерн template method). Это я только один так плохо знаю плюсы или для кого-нибудь кроме меня это тоже откровение?
заинтриговал заголовком, я подумал что тут про порно студию какой-то интересный момент, но в принципе не сильно ошибся
я читал в какой-то книжке что не рекомендуется менять доступность при наследовании, типа это плохо
Re[2]: Private - это всем кроме меня было известно?
Все проще: это способ сделать уровень доступа минимально необходимым. Если виртуальная функция private, потомки могут ее переопределить, но не могут вызвать. Если protected, потомки могут и переопределить и вызвать. Если public — вызвать могут все. Исходя из этого и выбирать.
Без деталей "всегда хорошо" и "нужно" — это религия. Вполне можно проектировать код, где private virtual не будет. Но знать, что private virtual можно переопределить в потомке, помогает придумывать более гибкие архитектуры.
Здравствуйте, Максим, Вы писали:
М>Тут узнал, что в плюсах private методы это не про visibility, а про accessibility. То есть, если есть базовый класс с private виртуальными функциями, то в классах потомках переопределять эти закрытые методы не то что можно, а нужно, так как такой подход считается предпочтительным при проектировании (паттерн template method). Это я только один так плохо знаю плюсы или для кого-нибудь кроме меня это тоже откровение?
Ну вообще, они прямо так и называются: access specifiers, поэтому странно было бы ждать здесь чего-то другого. Ну и потом, тот подход, который ты описал, довольно широко распространен и известен как non-virtual interface pattern.
--
Не можешь достичь желаемого — пожелай достигнутого.