dynamic_cast wordt gebruikt voor veilige typeconversies bij polymorfe klassen (met virtuele functies). Het wordt vooral gebruikt om afgeleide klassen te herkennen tijdens runtime.
nullptr bij mislukte conversie van pointers.std::bad_cast) bij mislukte conversie van referenties (tenzij je noexcept gebruikt).static_cast wanneer er sprake is van dynamische types.static_cast.#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
#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;
}