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объявление считается безопасным.