El polimorfismo es un concepto clave en la programación orientada a objetos (POO) que se refiere a la capacidad de una clase para tomar múltiples formas y comportarse de diferentes maneras. Hay dos tipos principales de polimorfismo en C++: el polimorfismo de compilación (o estático) y el polimorfismo de ejecución (o dinámico).
Polimorfismo de Compilación (Estático): El polimorfismo de compilación se logra a través del uso de sobrecarga de funciones y operadores, así como mediante plantillas. Permite que una función tenga múltiples formas dependiendo de los tipos de sus argumentos.
#include <iostream>
using namespace std;
int suma(int a, int b) {
return a + b;
}
double suma(double a, double b) {
return a + b;
}
int main() {
cout << suma(2, 3) << endl; // Llama a la versión para enteros
cout << suma(2.5, 3.5) << endl; // Llama a la versión para doubles
return 0;
}
Polimorfismo de Ejecución (Dinámico): El polimorfismo de ejecución se logra a través de la herencia y las funciones virtuales. Permite que los objetos de diferentes clases derivadas se comporten de manera diferente cuando se llaman a las mismas funciones.
#include <iostream>
using namespace std;
class Animal {
public:
virtual void sonido() {
cout << "Animal hace un sonido genérico." << endl;
}
};
class Perro : public Animal {
public:
void sonido() override {
cout << "El perro ladra." << endl;
}
};
class Gato : public Animal {
public:
void sonido() override {
cout << "El gato maulla." << endl;
}
};
int main() {
Animal* miAnimal;
Perro miPerro;
Gato miGato;
miAnimal = &miPerro;
miAnimal->sonido(); // Polimorfismo: llama al método de la clase derivada
miAnimal = &miGato;
miAnimal->sonido(); // Polimorfismo: llama al método de la otra clase derivada
return 0;
}
En este ejemplo, Animal
es la clase base y Perro
y Gato
son clases derivadas. Al usar funciones virtuales, se logra que el método sonido()
se comporte de manera diferente según la clase concreta a la que apunta el puntero miAnimal
.
Pueder ir al artículo principal:
Códigos Sencillos hechos en C++
Thank you for your sharing. I am worried that I lack creative ideas. It is your article that makes me full of hope. Thank you. But, I have a question, can you help me?