![Borrando la caché de DNS en Chrome](https://trspos.com/wp-content/uploads/cache-dns-clear-chrome-400x267.jpg)
Cómo llamar una función de una clase base en C++
![Cómo llamar una función de una clase base en C++](https://trspos.com/wp-content/uploads/llamar-a-la-clase-base-funcion-cpp.jpg)
En la programación orientada a objetos, a menudo se crea una clase derivada que hereda las propiedades y funciones de su clase base. A veces, es necesario utilizar una función de la clase base dentro de la clase derivada. En este artículo, aprenderemos cómo llamar una función de una clase base en C++.
- Uso de la palabra clave 'using'
- Uso de un puntero a la clase base
- Conclusión
-
Preguntas frecuentes
- ¿Por qué es necesario llamar a una función de una clase base?
- ¿Puedo llamar a una función de la clase base desde cualquier función de la clase derivada?
- ¿Qué pasa si la clase derivada tiene una función con el mismo nombre que la función de la clase base?
- ¿Puedo llamar a una función de la clase base utilizando herencia privada?
- Ejemplos de código
Uso de la palabra clave 'using'
Una manera de llamar una función de una clase base es a través de la palabra clave 'using'. La sintaxis es la siguiente:
using BaseClassName::functionName;
Esto permitirá que una función de la clase base esté disponible en la clase derivada.
Ejemplo
Considere esta clase base:
class Base {
public:
void display() {
std::cout << "Esta es la función display de la clase Base" << std::endl;
}
};
Podemos crear una clase derivada que herede la función 'display' de la clase Base:
class Derived : public Base {
public:
void displayMessage() {
std::cout << "Este es un mensaje de la clase derivada" << std::endl;
display();
}
};
Aquí, la función 'displayMessage' de la clase derivada llama a la función 'display' de la clase base usando la palabra clave 'using', como se muestra a continuación:
class Derived : public Base {
public:
using Base::display;
void displayMessage() {
std::cout << "Este es un mensaje de la clase derivada" << std::endl;
display();
}
};
La llamada a la función 'display' dentro de la función 'displayMessage' ahora encontrará la función de la clase base debido a la cláusula 'using' en la clase derivada. Al compilar y ejecutar este código, se muestra el mensaje del objeto derivado junto con el mensaje de la clase base.
Uso de un puntero a la clase base
Otra forma de llamar una función de una clase base es a través de un puntero a la clase base. Si se crea un objeto derivado y se asigna a un puntero de su clase base, se puede llamar a una función de la clase base utilizando el puntero.
Ejemplo
Consideremos la misma clase Base definida anteriormente, y la clase derivada:
class Derived : public Base {
public:
void displayMessage() {
std::cout << "Este es un mensaje de la clase derivada" << std::endl;
}
};
Ahora, veamos cómo podemos utilizar un puntero de la clase base para acceder a la función de la clase base:
int main() {
Derived derived;
Base *basePointer = &derived;
basePointer->display();
return 0;
}
En este ejemplo, se crea un objeto de la clase Derived y se asigna a un puntero de su clase base, Base. Después, se llama a la función 'display' de la clase base utilizando el puntero Base. Esto imprimirá el mensaje "Esta es la función display de la clase Base".
Conclusión
Llamar a una función de una clase base en C++ puede hacerse usando la palabra clave 'using' o a través de un puntero a la clase base. Ambas técnicas son útiles en diferentes situaciones, y ahora tienes la capacidad de utilizarlas en tus programas.
Preguntas frecuentes
¿Por qué es necesario llamar a una función de una clase base?
A menudo se requiere utilizar una función de la clase base en una clase derivada para evitar duplicar el código y cumplir con el principio DRY (Don't Repeat Yourself).
¿Puedo llamar a una función de la clase base desde cualquier función de la clase derivada?
Sí, siempre y cuando la función de la clase base sea pública y haya sido heredada por la clase derivada.
¿Qué pasa si la clase derivada tiene una función con el mismo nombre que la función de la clase base?
La función de la clase derivada sobrescribirá la función de la clase base, a menos que se utilice la palabra clave 'using' para dejar disponible la función de la clase base en la clase derivada.
¿Puedo llamar a una función de la clase base utilizando herencia privada?
No, la herencia privada no permite el acceso a las funciones públicas de la clase base en la clase derivada.
Ejemplos de código
class Base {
public:
void display() {
std::cout << "Esta es la función display de la clase Base" << std::endl;
}
};
class Derived : public Base {
public:
void displayMessage() {
std::cout << "Este es un mensaje de la clase derivada" << std::endl;
display();
}
};
int main() {
Derived derived1;
Base *basePointer = &derived1;
basePointer->display();
Derived derived2;
derived2.displayMessage();
return 0;
}
Deja una respuesta