private
является предпочтительным для данных участника. Члены в классах C ++ являются private
по умолчанию.
public
предпочтительнее для функций-членов, хотя это вопрос мнения. По крайней мере, некоторые методы должны быть доступны. public
доступно для всех. Это наиболее гибкий и наименее безопасный вариант. Любой может использовать их, и любой может злоупотреблять ими.
private
не доступен вообще. Никто не может использовать их вне класса, и никто не может злоупотреблять ими. Даже в производных классах.
protected
это компромисс, потому что он может быть использован в производных классах. Когда вы выходите из класса, вы хорошо понимаете базовый класс и стараетесь не злоупотреблять этими членами.
MFC - оболочка C ++ для Windows API, она предпочитает public
и protected
. Классы , создаваемые Visual Studio Wizard имеют уродливую смесь protected
, public
и private
членов. Но есть некоторая логика для самих классов MFC.
Участники, такие как SetWindowText
, public
потому что вам часто нужно получить доступ к этим членам.
Члены, такие как OnLButtonDown
, обрабатывают уведомления, полученные окном. Они не должны быть доступны, поэтому они есть protected
. Вы по-прежнему можете обращаться к ним в производном классе, чтобы переопределить эти функции.
Некоторые члены должны делать потоки и циклы сообщений, к ним нельзя обращаться или переопределять, поэтому они объявлены как private
В структурах C ++ члены public
по умолчанию. Структуры обычно используются только для данных, а не для методов, поэтому public
объявление считается безопасным.