#include <iostream>
class BaseClass
{
public:
virtual void f() const;
};
void BaseClass::f() const
{
std::cout << "In base class function\n";
}
class DerivedClass: public BaseClass
{
public:
void f() const override;
};
void DerivedClass::f() const
{
std::cout << "In derived class function\n";
}
int main()
{
DerivedClass derived_object;
BaseClass &base_object = derived_object;
BaseClass *base_object_ptr = &derived_object;
base_object.f();//вызовет f, определённый в суперклассе
base_object_ptr -> f();//вызовет f, определённый в наследнике
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgQmFzZUNsYXNzCnsKcHVibGljOgogICAgdmlydHVhbCB2b2lkIGYoKSBjb25zdDsKfTsKCnZvaWQgQmFzZUNsYXNzOjpmKCkgY29uc3QKewogICAgc3RkOjpjb3V0IDw8ICJJbiBiYXNlIGNsYXNzIGZ1bmN0aW9uXG4iOwp9CgpjbGFzcyBEZXJpdmVkQ2xhc3M6IHB1YmxpYyBCYXNlQ2xhc3MKewpwdWJsaWM6CiAgICB2b2lkIGYoKSBjb25zdCBvdmVycmlkZTsKfTsKCnZvaWQgRGVyaXZlZENsYXNzOjpmKCkgY29uc3QKewogICAgc3RkOjpjb3V0IDw8ICJJbiBkZXJpdmVkIGNsYXNzIGZ1bmN0aW9uXG4iOwp9CgppbnQgbWFpbigpCnsKICAgIERlcml2ZWRDbGFzcyBkZXJpdmVkX29iamVjdDsKICAgIEJhc2VDbGFzcyAmYmFzZV9vYmplY3QgPSBkZXJpdmVkX29iamVjdDsKICAgIEJhc2VDbGFzcyAqYmFzZV9vYmplY3RfcHRyID0gJmRlcml2ZWRfb2JqZWN0OwoKICAgIGJhc2Vfb2JqZWN0LmYoKTsvL9Cy0YvQt9C+0LLQtdGCIGYsINC+0L/RgNC10LTQtdC70ZHQvdC90YvQuSDQsiDRgdGD0L/QtdGA0LrQu9Cw0YHRgdC1CiAgICBiYXNlX29iamVjdF9wdHIgLT4gZigpOy8v0LLRi9C30L7QstC10YIgZiwg0L7Qv9GA0LXQtNC10LvRkdC90L3Ri9C5INCyINC90LDRgdC70LXQtNC90LjQutC1CiAgICByZXR1cm4gMDsKfQ==