#include <bits/stdc++.h>
using namespace std;
class Base {
public:
virtual int function() const {
cout << "Base::function()\n";
return 1;
}
virtual void function(string) const {}
};
class Derived : public Base {
public:
// overloading function() of base
int function(int) const {
cout << "Derived::function()\n";
return 4;
}
};
int main()
{
string s("StackOverflow");
Derived d;
Base* b = &d;
//calling derived::function() and function(s)
b->function();
b->function(s);
}
IAkjaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAgICAKICAgIGNsYXNzIEJhc2UgewogICAgICBwdWJsaWM6CiAgICAgIHZpcnR1YWwgaW50IGZ1bmN0aW9uKCkgY29uc3QgewogICAgCWNvdXQgPDwgIkJhc2U6OmZ1bmN0aW9uKClcbiI7CiAgICAJcmV0dXJuIDE7CiAgICAgIH0KICAgICAgdmlydHVhbCB2b2lkIGZ1bmN0aW9uKHN0cmluZykgY29uc3Qge30KICAgIH07CiAgICAKICAgIAogICAgY2xhc3MgRGVyaXZlZCA6IHB1YmxpYyBCYXNlIHsKICAgICAgcHVibGljOgogICAgICAgICAgIC8vIG92ZXJsb2FkaW5nIGZ1bmN0aW9uKCkgb2YgYmFzZQogICAgICAgICAgIGludCBmdW5jdGlvbihpbnQpIGNvbnN0IHsKICAgICAgICAgICAgIGNvdXQgPDwgIkRlcml2ZWQ6OmZ1bmN0aW9uKClcbiI7CiAgICAgICAgICAgICByZXR1cm4gNDsKICAgICAgICB9CiAgICB9OwogICAgCiAgICAKICAgIGludCBtYWluKCkKICAgIHsKICAgIAlzdHJpbmcgcygiU3RhY2tPdmVyZmxvdyIpOwoJCURlcml2ZWQgZDsKICAgIAlCYXNlKiBiID0gJmQ7CiAgICAgICAgLy9jYWxsaW5nIGRlcml2ZWQ6OmZ1bmN0aW9uKCkgYW5kIGZ1bmN0aW9uKHMpICAgIAogICAgCWItPmZ1bmN0aW9uKCk7CiAgICAJYi0+ZnVuY3Rpb24ocyk7CiAgICB9Cg==