Qual é a diferença entre membros privados e protegidos de classes C++

Qual E A Diferenca Entre Membros Privados E Protegidos De Classes C



C++ é uma linguagem de programação orientada a objetos (OOP) que fornece um mecanismo para encapsular dados e funções em uma única entidade chamada classe. Um dos recursos essenciais da classe é a capacidade de especificar o nível de acesso para seus membros. Na Programação Orientada a Objetos, especificadores de acesso são usados ​​para controlar a visibilidade e acessibilidade dos campos e métodos de uma classe. Protegido , público , e privado níveis de acesso são os três tipos básicos de níveis de acesso em C++.

Neste artigo, discutiremos a diferença entre os dois principais especificador de acesso s, privado e protegido membros de uma classe C++.

Especificador de Acesso Privado

membros privados são declarados usando a palavra-chave ‘ privado '. O especificador de acesso privado limita o acesso aos membros da classe apenas para a própria classe. O código fora da classe não pode acessar ou alterar um membro privado. Isso significa que apenas os métodos declarados na classe podem acessar e operar na membros privados , nem mesmo classes derivadas podem acessar membros privados . Um uso comum de membros privados é garantir o correto funcionamento de uma classe. membros privados são usados ​​para encapsular os dados da classe e fornecer um nível de abstração aos usuários da classe.







#include
usando namespace std ;

aula jogador {

privado :
nome da string ;
int idade ;

público :
vazio getPlayer ( )
{
cout << 'Insira o nome: ' ;
comendo >> nome ;
cout << 'Digite a idade: ' ;
comendo >> idade ;
}
vazio showPlayer ( )
{
cout << 'Nome: ' << nome << fim ;
cout << 'Idade: ' << idade << fim ;
}
} ;

int principal ( )
{
jogador pl ;
pl. getPlayer ( ) ;
pl. showPlayer ( ) ;

retornar 0 ;
}

No código acima, usamos os métodos de membro público getPlayer() e showPlayer() para acessar os dois privado membros' nome e idade . O getPlayer() A função obtém a entrada dos usuários e a exibe na tela por meio de showPlayer() função.



Saída







Especificador de Acesso Protegido

membros protegidos de uma classe pode ser acessado tanto pelas classes derivadas quanto pelas funções membro da própria classe. membros protegidos são usados ​​para fornecer um nível de acesso às classes derivadas sem expor os detalhes de implementação para o mundo externo. membros protegidos são declarados usando a palavra-chave ‘ protegido ' e a dois pontos (:) personagem. membros protegidos permitem que uma classe seja estendida e modificada, sem comprometer sua integridade. Uma classe derivada pode usar membros protegidos para refinar ou personalizar o comportamento de uma classe base.

Aqui está um exemplo de uma classe com membros protegidos :



#include
usando namespace std;

jogador de classe {
privado:
nome da cadeia;
idade int;

protegido:
objetivos int;

público:
void getPlayer ( )
{
cout <> nome;
cout <> idade;
}
void showPlayer ( )
{
cout << 'Nome: ' << nome << endl;
cout << 'Idade: ' << idade << endl;
}
} ;

class player1: jogador público {

privado:
país da corda;

público:
void set_goals ( int g )
{
metas = g;
}
void getPlayer1 ( )
{
getPlayer ( ) ;
cout <> país;
}
void showPlayer1 ( )
{
cout << 'metas: ' << metas << endl;
showPlayer ( ) ;
cout << 'País: ' << país << endl;
}
} ;

int principal ( )
{
jogador1 pl;
pl.set_goals ( 101 ) ;
pl.getPlayer1 ( ) ;
pl.showPlayer1 ( ) ;

retornar 0 ;
}

O jogador classe compreende dois membros privados , nome e idade , um protegido membro, metas , e privado membros são utilizados dentro do público funções de membro, getPlayer() e showPlayer() . Existem duas classes, jogador e jogador1 , sendo que ambas são classes base. Um privado membro, país , e três público métodos membros compõem o jogador1 aula. Set_goals() é usado para alterar o membro protegido metas' valor. getPlayer1() chama o getPlayer() função de membro do jogador classe enquanto recupera adicionalmente a entrada para o país. Semelhante a este, showPlayer1() chama o showPlayer() função de membro e imprime o metas e país valores.

Saída

Diferença entre membros privados e protegidos de classes C++

Aqui estão listadas algumas das principais diferenças entre Privado e Protegido membros de classes C++.

1: Escopo e Funcionalidade

Ao considerar o uso de especificadores de acesso, é crucial pensar cuidadosamente sobre o escopo e funcionalidade do programa. A especificador de acesso privado fornece o mais alto nível de segurança e evita acesso não intencional a variáveis ​​e métodos. Por outro lado, um especificador de acesso protegido oferece uma gama mais ampla de acessibilidade e flexibilidade, o que é essencial ao planejar herdar classes derivadas de uma classe base.

2: Nível de Acesso

A principal diferença entre privado e membros protegidos é o nível de acesso que eles fornecem. Protegido Os membros podem ser acessíveis tanto pelas classes derivadas da classe quanto pelas funções membro, mas privado Os membros só podem ser obtidos pelas funções de membro da classe.

3: Encapsulamento da classe

Outra diferença crucial entre privado e protegido membros é seu papel na manutenção do encapsulamento da classe. Para isolar os dados e fornecer aos usuários da classe algum nível de abstração, privado membros estão empregados. Protegido os membros são empregados para gerenciar a estrutura de herança e fornecer acesso aos membros da classe base por classes derivadas.

Pensamentos finais

Privado e membros protegidos são os dois níveis de acesso essenciais na classe C++. O privado O especificador de acesso torna os membros da classe inacessíveis a todos os usuários externos e é usado para manter as informações privado dentro da classe. Em contraste, um protegido o especificador de acesso permite acesso a membros de classe apenas por classes derivadas, é usado para fornecer funcionalidade de classe base e permite modificação sem alterar o comportamento da classe base. O nível de acesso dos membros da classe desempenha um papel crucial na manutenção do encapsulamento da classe e no fornecimento de um nível de acesso aos usuários da classe.