#include <iostream>
using namespace std;
class Animal {
public:
virtual void sound() {
cout << "Animal sound\n";
}
};
class Dog : public Animal {
public:
void bark() {
cout << "Woof!\n";
}
};
class Cat : public Animal {
public:
void meow() {
cout << "Meow!\n";
}
};
int main() {
Animal* a = new Dog();
Dog* d = dynamic_cast<Dog*>(a);
if (d != nullptr) {
d->bark();
} else {
cout << "Not a Dog\n";
}
delete a;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgQW5pbWFsIHsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIHNvdW5kKCkgewogICAgICAgIGNvdXQgPDwgIkFuaW1hbCBzb3VuZFxuIjsKICAgIH0KfTsKCmNsYXNzIERvZyA6IHB1YmxpYyBBbmltYWwgewpwdWJsaWM6CiAgICB2b2lkIGJhcmsoKSB7CiAgICAgICAgY291dCA8PCAiV29vZiFcbiI7CiAgICB9Cn07CgpjbGFzcyBDYXQgOiBwdWJsaWMgQW5pbWFsIHsKcHVibGljOgogICAgdm9pZCBtZW93KCkgewogICAgICAgIGNvdXQgPDwgIk1lb3chXG4iOwogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBBbmltYWwqIGEgPSBuZXcgRG9nKCk7CgogICAgRG9nKiBkID0gZHluYW1pY19jYXN0PERvZyo+KGEpOwoKICAgIGlmIChkICE9IG51bGxwdHIpIHsKICAgICAgICBkLT5iYXJrKCk7CiAgICB9IGVsc2UgewogICAgICAgIGNvdXQgPDwgIk5vdCBhIERvZ1xuIjsKICAgIH0KCiAgICBkZWxldGUgYTsKfQ==