private
é preferido para dados do membro. Os membros nas classes C ++ são private
por padrão.
public
é preferido para funções-membro, embora seja uma questão de opinião. Pelo menos alguns métodos devem estar acessíveis. public
é acessível a todos. É a opção mais flexível e menos segura. Qualquer um pode usá-los e qualquer pessoa pode usá-los mal.
private
não é acessível. Ninguém pode usá-los fora da classe e ninguém pode usá-los mal. Nem mesmo em classes derivadas.
protected
é um compromisso porque pode ser usado em classes derivadas. Ao derivar de uma classe, você tem um bom entendimento da classe base e toma cuidado para não abusar desses membros.
MFC é um wrapper C ++ para API do Windows, ele prefere public
e protected
. Classes geradas pelo Visual Studio Assistente de ter um mix feio protected
, public
e private
membros. Mas há alguma lógica nas próprias classes do MFC.
Membros como SetWindowText
são public
porque você geralmente precisa acessar esses membros.
Membros como OnLButtonDown
, manipulam as notificações recebidas pela janela. Eles não devem ser acessados, pois são protected
. Você ainda pode acessá-los na classe derivada para substituir essas funções.
Alguns membros precisam fazer threads e loops de mensagens, eles não devem ser acessados ou substituir, portanto, são declarados como private
Nas estruturas C ++, os membros são public
por padrão. As estruturas são geralmente usadas apenas para dados, não para métodos; portanto, a public
declaração é considerada segura.