Atributos con el mismo nombre

Cuando tienes una clase derivada en C++ y tanto la clase base como la clase derivada tienen atributos con el mismo nombre, se produce una situación conocida como ocultamiento de nombre (name hiding).

En esta situación, el atributo de la clase base se oculta y no es accesible directamente desde la clase derivada. Sin embargo, aún es posible acceder al atributo de la clase base utilizando el operador de resolución de alcance (::) seguido del nombre de la clase base y el miembro privado que se desea acceder, siempre y cuando esta operación se realice desde dentro de la propia clase derivada.

Aquí tienes un ejemplo que ilustra cómo se manejan los atributos con el mismo nombre en una clase derivada:

En este ejemplo, tanto la clase base ClaseBase como la clase derivada ClaseDerivada tienen un atributo llamado atributo.

El atributo de la clase derivada oculta al atributo de la clase base. Dentro de la función AccederAtributos de la clase derivada, se puede acceder tanto al atributo de la clase derivada como al atributo de la clase base utilizando el operador de resolución de alcance (::).

Fuera de las clases, se puede acceder al atributo de la clase derivada directamente a través de un objeto de la clase derivada, y se puede acceder al atributo de la clase base utilizando el operador de resolución de alcance y el nombre de la clase base.