Polymorphism - Tryhardtocarry/2143-oop GitHub Wiki
Polymorphism allows different classes to share the same function name but perform different actions.
In C++, this is achieved using virtual functions in the base class, allowing method overriding in derived classes.
#include <iostream>
#include <vector>
#include <memory>
using namespace std;
// Base class (Parent)
class Character {
public:
virtual void attack() { cout << "This is a weak attack!" << endl; }
virtual ~Character() {} // Virtual destructor
};
// Derived classes with their own attack methods
class Warrior : public Character {
public:
void attack() override { cout << "Warrior swings his sword!" << endl; }
};
class Wizard : public Character {
public:
void attack() override { cout << "Wizard casts a fireball!" << endl; }
};
class Rogue : public Character {
public:
void attack() override { cout << "Rogue strikes from the shadows!" << endl; }
};
// Function using polymorphism
void battleSimulation(vector<unique_ptr<Character>> &party) {
for (const auto &member : party) {
member->attack(); // Calls the correct attack() method dynamically
}
}
int main() {
vector<unique_ptr<Character>> party;
party.push_back(make_unique<Warrior>());
party.push_back(make_unique<Wizard>());
party.push_back(make_unique<Rogue>());
battleSimulation(party); // Runs attack() for each character
return 0;
}
**Same function (`attack()`) behaves differently for each class.**
**Base class pointer (`Character*`) calls correct function dynamically.**
**Virtual functions enable polymorphism.**
---
##
- [C++ Polymorphism - W3Schools](https://www.w3schools.com/cpp/cpp_polymorphism.asp)
- [C++ Virtual Functions - cplusplus.com](https://cplusplus.com/doc/tutorial/polymorphism/)