Polymorphism - Tryhardtocarry/2143-oop GitHub Wiki

Polymorphism in C++

Definition

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.


** Example: Polymorphism in a Game**

#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/)


⚠️ **GitHub.com Fallback** ⚠️