Programar em C++/Herança: diferenças entre revisões

[edição não verificada][edição não verificada]
Conteúdo apagado Conteúdo adicionado
Linha 116:
== Controle de acesso à classe base ==
 
Quando uma classe herda outra, os membros da classe base são incorporados como membros da classe derivada. Devido à separação das classes e do controle de acesso às variáveis em cada classe, devemos pensar como as restrições de acesso são gerenciadas em classes diferentes, principalmente o acesso a membros da classe base a partir das classes derivadas.
 
O acesso dos membros da classe base à classe derivada é determinado pelo especificador de acesso: '''public''', '''private''' e '''protected'''. Por "defaut" (padrão) temos o private, ou seja, como temos a opção de não explicitar o especificador de acesso, sabesse queeste elesnão sãoestiver presente o compilador usará "private" pordurante defauta interpretação do código.
 
Assim ficamos com as possíveis combinações
 
*baseClasse classbase inheretherdada ascomo '''Publicpublic''':
**PublicMembros membrerpúblicos (public) da base classe base:
***É como tivéssemosse acopiássemos fazeros copy dos public membersmembros da classe base e os colocássemos como "public" na classe derivada. No final, eles permanecem como públicos.
**PrivateMembros membrerprivados (private) da base classe base:
***Os membros estão presentes na classe, porém ocultos como privados. Desta forma as informações estão presentes, mas só podem ser acessadas através de funções publicas ou protegidas da classe base.
***não são passados
**ProtectedMembros membrerprotegidos (protected) da base classe base:
***seSe tivermos protectedmembros membersprotegidos (protected) na classe derivada, eles são como copiados para a classe derivada como protegidos (protected).
 
*baseClasse classbase inheretherdada ascomo '''Privateprivate''':
**PublicMembros membrerpúblicos (public) da base classe base:
É***Os comomembros tivéssemosse acomportam fazercomo copyse dostivessem publicsido copiados memberscomo daprivados classe base e os colocássemos como **(private) na classe derivada.
**PrivateMembros membrerprivados (private) da base classe base:
***Os membros estão presentes na classe, porém ocultos como privados. Desta forma as informações estão presentes, mas não poderão ser acessados.
***não são passados
**Protected membrer da base classe base:
***èOs comomembros estivéssemosse acomportam copiarcomo osse protectedtivessem memberssido dacopiados classecomo base e os colocássemos comoprivados (private) na classe derivada.