Publicado em Programação

Utilização do operador de resolução de “escopo” ( :: ) nas classes em C++

O :: (scope resolution operator) possibilita o acesso a nomes ocultos que de outra forma seriam inacessíveis.

Nos casos em que é utilizada herança privada ou protegida, é possível tornar acessíveis os membros da classe-base a partir da respectiva classe derivada, bastando para o efeito utilizar uma declaração de acesso.

O exemplo seguinte ilustra esta situação.

#include <iostream>
using namespace std;

class Base{
public:
	int x;
protected:
	int y;
private:
	int z;
};

class Derivada1:private Base{
public:
	Derivada1(){
		w = 33;
	}
	Base::x;
	Base::y;
	void f1(){
		x = 0;
		y = 0;
	}
protected:
	void f2(){
		w = 2 * x;
	}
private:
	int w;
};

int main(){
	Derivada1 B;
	B.x = 3;	//só é possível em consequência da linha 18
	B.y = 4;	//só é possível em consequência da linha 19
}

Observações:

  • o tipo de herança utilizado é “private”, pelo que seria de esperar que o utilizador da classe derivada não tivesse acesso à classe base;

tiposdeheranca04

  • no entando, tal como se pode constatar no exemplo, é possível aceder aos membros x e y da classe-base (ver linhas 34 e 35);
  • tal só é possível utilizando as declarações de acesso (ver linhas 18 2 19).

Para visualizar as mensagens de erro recomendo comentar as linhas 18 e 19 e depois tentar compilar o programa.

Nota: Tenho imensas dificuldades em traduzir algumas palavras para Português. Não é pelo facto da tradução directa não ser possível, mas por vezes perde-se algo nessa transposição. É o caso da palavra “scope” :)

Anúncios

Deixe uma Resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

Logótipo da WordPress.com

Está a comentar usando a sua conta WordPress.com Terminar Sessão / Alterar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Terminar Sessão / Alterar )

Facebook photo

Está a comentar usando a sua conta Facebook Terminar Sessão / Alterar )

Google+ photo

Está a comentar usando a sua conta Google+ Terminar Sessão / Alterar )

Connecting to %s