1. 🔄 Dynamic cast

✅ Wat is het?

dynamic_cast wordt gebruikt voor veilige typeconversies bij polymorfe klassen (met virtuele functies). Het wordt vooral gebruikt om afgeleide klassen te herkennen tijdens runtime.

🔑 Belangrijke bulletpoints:

⚠️ Valkuilen:


💻 Voorbeeldcode:

animal.h

#ifndef ANIMAL_H
#define ANIMAL_H

#include <iostream>

class Animal {
public:
    virtual void speak() { std::cout << "Animal sound\\\\n"; }
    virtual ~Animal() = default; // Polymorfisme
};

class Dog : public Animal {
public:
    void speak() override { std::cout << "Woof!\\\\n"; }
};

class Cat : public Animal {
public:
    void speak() override { std::cout << "Meow!\\\\n"; }
};

#endif // ANIMAL_H

main.cpp

#include "animal.h"

int main() {
    Dog dog;
    Animal* animalPtr = &dog;

    // Dynamisch casten naar Dog*
    Dog* dogPtr = dynamic_cast<Dog*>(animalPtr);
    if (dogPtr) {
        dogPtr->speak(); // Output: Woof!
    } else {
        std::cout << "Not a Dog\\\\n";
    }

    return 0;
}