Se um membro de uma classe é privada, não pode ser acessado por uma função externa; até mesmo uma classe derivada não pode acessá-lo. A questão é, se uma classe derivada não é realmente ser capaz de acessar um membro particular da sua classe base (já que a classe classe e base de derivados estão relacionados)? Bem, para resolver este problema que você tem outra chamada especificador de acesso, protegida. Se um membro de uma classe esteja protegido, ele pode ser acessado por uma classe derivada, mas ele não pode ser acessado por uma função externa.
Ele também pode ser acessado por membros dentro da classe. O código a seguir ilustra como uma classe derivada pode acessar um membro protegido de uma classe base: #include using namespace std; class Calculator {protected: int num1; int num2; }; classe ChildCalculator: Calculadora pública {public: int add () {num1 = 2; num2 = 3; int sum = num1 + num2; retornar soma; }}; int main () {ChildCalculator myChildObj; resultado int = myChildObj.add (); cout retornar 0; } A classe base tem apenas duas propriedades e nenhum método; estas propriedades estão protegidos.
A classe derivada tem um método e nenhuma propriedade. Dentro da classe derivada, as propriedades protegidas da classe base são usados como identificadores. Geralmente, quando uma classe é derivado utilizando um membro de uma classe de base, que é um método de classe derivada que está a utilizar o elemento, como no presente exemplo. O código acima é OK.
O código a seguir não irá compilar, porque a linha 2 na função main () tenta acessar um membro protegido da classe base: #include using namespace std; class Calculator {protected: int num1; int num2; }; classe ChildCalculator: Calculadora pública {public: int add () {num1; num2 = 3; int sum = num1 + num2; retornar soma; }}; int main () {obj Calculadora; obj.num1 = 2; ChildCalculator myChildObj; resultado int = myChildObj.add (); cout retornar 0; } Uma função externa não pode acessar um membro protegido de uma classe (a cla