Neste tutorial, aprenderemos sobre os modificadores de acesso para classes C ++ com a ajuda de exemplos. Os modificadores de acesso do C ++ são públicos, privados e protegidos.
Um dos principais recursos das linguagens de programação orientadas a objetos, como C ++, é o ocultamento de dados .
A ocultação de dados refere-se à restrição do acesso a membros de dados de uma classe. Isso evita que outras funções e classes interfiram nos dados da classe.
No entanto, também é importante tornar acessíveis algumas funções de membro e dados de membro para que os dados ocultos possam ser manipulados indiretamente.
Os modificadores de acesso do C ++ nos permitem determinar quais membros da classe são acessíveis a outras classes e funções e quais não são.
Por exemplo,
class Patient ( private: int patientNumber; string diagnosis; public: void billing() ( // code ) void makeAppointment() ( // code ) );
Aqui, as variáveis número do paciente e diagnóstico da Patient
classe são ocultados por meio da private
palavra - chave, enquanto as funções membro são acessíveis por meio da public
palavra - chave.
Tipos de modificadores de acesso C ++
Em C ++, existem 3 modificadores de acesso:
public
private
protected
Modificador de acesso público
- A
public
palavra-chave é usada para criar membros públicos (dados e funções). - Os membros públicos podem ser acessados em qualquer parte do programa.
Exemplo 1: Modificador de acesso público C ++
#include using namespace std; // define a class class Sample ( // public elements public: int age; void displayAge() ( cout << "Age = " << age << endl; ) ); int main() ( // declare a class object Sample obj1; cout <> obj1.age; // call class function obj1.displayAge(); return 0; )
Resultado:
Digite sua idade: 20 Idade = 20
Neste programa, criamos uma classe chamada Sample
, que contém uma public
variável idade e uma public
função displayAge()
.
Em main()
, criamos um objeto da Sample
classe denominado obj1. Em seguida, acessamos os elementos públicos diretamente usando os códigos obj.age
e obj.displayAge()
.
Modificador de acesso privado
- A
private
palavra-chave é usada para criar membros privados (dados e funções). - Os membros privados podem ser acessados apenas de dentro da classe.
- No entanto, classes de amigos e funções de amigos podem acessar membros privados.
Exemplo 2: especificador de acesso privado C ++
#include using namespace std; // define a class class Sample ( // private elements private: int age; // public elements public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare an object Sample obj1; cout <> ageInput; // call function and pass ageInput as argument obj1.displayAge(ageInput); return 0; )
Resultado:
Digite sua idade: 20 Idade = 20
Em main()
, o objeto obj1 não pode acessar diretamente a variável de classe idade.
// error cin>> obj1.age;
Podemos apenas manipular idade indiretamente por meio da função pública displayAge()
, uma vez que essa função atribui idade ao argumento passado para ela, ou seja, o parâmetro da função int a
.
Modificador de acesso protegido
Antes de aprendermos sobre o protected
especificador de acesso, certifique-se de saber sobre herança em C ++.
- A
protected
palavra-chave é usada para criar membros protegidos (dados e função). - Os membros protegidos podem ser acessados dentro da classe e da classe derivada.
Exemplo 3: especificador de acesso protegido por C ++
#include using namespace std; // declare parent class class Sample ( // protected elements protected: int age; ); // declare child class class SampleChild : public Sample ( public: void displayAge(int a) ( age = a; cout << "Age = " << age << endl; ) ); int main() ( int ageInput; // declare object of child class SampleChild child; cout <> ageInput; // call child class function // pass ageInput as argument child.displayAge(ageInput); return 0; )
Resultado:
Digite sua idade: 20 Idade = 20
Aqui, ChildSample
está uma classe herdada que é derivada de Sample
. A variável idade é declarada Sample
com a protected
palavra - chave.
Isso significa que ChildSample
pode acessar idade, pois Sample
é sua classe pai.
Vemos isso quando atribuímos o valor de idade ChildSample
, embora a idade seja declarada na Sample
classe.
Resumo: público, privado e protegido
public
os elementos podem ser acessados por todas as outras classes e funções.private
os elementos não podem ser acessados fora da classe em que foram declarados, exceto porfriend
classes e funções.protected
elementos são iguais aprivate
, exceto que podem ser acessados por classes derivadas.
Especificadores | Mesma classe | Classe derivada | Classe Externa |
---|---|---|---|
public | sim | sim | sim |
private | sim | Não | Não |
protected | sim | sim | Não |
Nota: Por padrão, os membros da classe em C ++ são private
, a menos que especificado de outra forma.