i'm wondering why this code works properly, i was convinced that casting wrong class would result in crash.
#include <iostream>
using namespace std;
class Base {
public:
void MainFunc() {
cout << "MainFunc called.\n";
}
};
class DerivedOne : public Base {
public:
void FirstDerived() {
cout << "FirstDerived called.\n";
}
};
class DerivedTwo : public Base {
public:
void SecondDerived() {
cout << "SecondDerived called.\n";
}
};
int main() {
Base* classesArray[2];
classesArray[0] = new Base();
classesArray[1] = new DerivedOne();
((DerivedTwo*)classesArray[1])->SecondDerived();
}
Is it okay to cast wrong derived class?