#include <iostream>
#include <stdexcept>
class Bird {
public:
virtual void fly() {
std::cout << "Flying" << std::endl;
}
};
class Sparrow : public Bird {
public:
void fly() override {
std::cout << "Sparrow is flying" << std::endl;
}
};
class Ostrich {
public:
void walk() {
std::cout << "Ostrich is walking" << std::endl;
}
};
int main() {
Bird* bird = new Sparrow();
bird->fly(); // Correct behavior
// Replacing with Ostrich will cause issues as Ostrich can't fly
// Bird* ostrich = new Ostrich();
delete bird;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RkZXhjZXB0PgoKY2xhc3MgQmlyZCB7CnB1YmxpYzoKICAgIHZpcnR1YWwgdm9pZCBmbHkoKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJGbHlpbmciIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmNsYXNzIFNwYXJyb3cgOiBwdWJsaWMgQmlyZCB7CnB1YmxpYzoKICAgIHZvaWQgZmx5KCkgb3ZlcnJpZGUgewogICAgICAgIHN0ZDo6Y291dCA8PCAiU3BhcnJvdyBpcyBmbHlpbmciIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmNsYXNzIE9zdHJpY2ggewpwdWJsaWM6CiAgICB2b2lkIHdhbGsoKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJPc3RyaWNoIGlzIHdhbGtpbmciIDw8IHN0ZDo6ZW5kbDsKICAgIH0KfTsKCmludCBtYWluKCkgewogICAgQmlyZCogYmlyZCA9IG5ldyBTcGFycm93KCk7CiAgICBiaXJkLT5mbHkoKTsgLy8gQ29ycmVjdCBiZWhhdmlvcgoKICAgIC8vIFJlcGxhY2luZyB3aXRoIE9zdHJpY2ggd2lsbCBjYXVzZSBpc3N1ZXMgYXMgT3N0cmljaCBjYW4ndCBmbHkKICAgIC8vIEJpcmQqIG9zdHJpY2ggPSBuZXcgT3N0cmljaCgpOyAKCiAgICBkZWxldGUgYmlyZDsKICAgIHJldHVybiAwOwp9Cgo=