$ cat dogs.cpp
#include <iostream>
using namespace std;
class normal_dog {
public:
virtual void bark() { cout << "bow!" << endl; }
};
class active_dog {
public:
virtual void bark_twice() { bark(); bark(); }
virtual void bark() { cout << "bow-wow!" << endl; }
};
class meta_dog : public normal_dog, public active_dog {
};
int main() {
meta_dog *meta = new meta_dog();
normal_dog *normal = meta;
active_dog *active = meta;
normal->bark();
active->bark();
((normal_dog *)active)->bark();
((active_dog *)normal)->bark();
}
$ g++ dogs.cpp && ./a.out
bow!
bow-wow!
bow-wow!
bow-wow!
Segmentation fault