#include <iostream>
#include <exception>
#include <vector>
#include <string>
#include <iterator>
#include <algorithm>
class base
{
public:
base() = default;
virtual ~base() = default;
void func()
{
std::cout << "base" << std::endl;
}
virtual void g()
{
std::cout << "base::g" << std::endl;
}
};
class derived : public base
{
public:
void func()
{
std::cout << "derived" << std::endl;
}
void g() override
{
std::cout << "derived::g" << std::endl;
}
void e()
{
std::cout << "derived:e" << std::endl;
}
};
void st(void)
{
static int x = 1;
std::cout << x << std::endl;
++x;
}
int main()
{
base b;
derived d;
base& bRef = b;
base& dRef = d;
bRef.g();
dRef.g();
static_cast<derived&>(bRef).e();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZXhjZXB0aW9uPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgpjbGFzcyBiYXNlCnsKcHVibGljOgoJYmFzZSgpID0gZGVmYXVsdDsKCXZpcnR1YWwgfmJhc2UoKSA9IGRlZmF1bHQ7CgoJdm9pZCBmdW5jKCkKCXsKCQlzdGQ6OmNvdXQgPDwgImJhc2UiIDw8IHN0ZDo6ZW5kbDsKCX0KCgl2aXJ0dWFsIHZvaWQgZygpCgl7CgkJc3RkOjpjb3V0IDw8ICJiYXNlOjpnIiA8PCBzdGQ6OmVuZGw7Cgl9Cn07CgpjbGFzcyBkZXJpdmVkIDogcHVibGljIGJhc2UKewpwdWJsaWM6Cgl2b2lkIGZ1bmMoKQoJewoJCXN0ZDo6Y291dCA8PCAiZGVyaXZlZCIgPDwgc3RkOjplbmRsOwoJfQoKCXZvaWQgZygpIG92ZXJyaWRlCgl7CgkJc3RkOjpjb3V0IDw8ICJkZXJpdmVkOjpnIiA8PCBzdGQ6OmVuZGw7Cgl9CgoJdm9pZCBlKCkKCXsKCQlzdGQ6OmNvdXQgPDwgImRlcml2ZWQ6ZSIgPDwgc3RkOjplbmRsOwoJfQp9OwoKdm9pZCBzdCh2b2lkKQp7CglzdGF0aWMgaW50IHggPSAxOwoJc3RkOjpjb3V0IDw8IHggPDwgc3RkOjplbmRsOwoJKyt4Owp9CgppbnQgbWFpbigpCnsKCWJhc2UgYjsKCWRlcml2ZWQgZDsKCgliYXNlJiBiUmVmID0gYjsKCWJhc2UmIGRSZWYgPSBkOwoKCWJSZWYuZygpOwoJZFJlZi5nKCk7CgoJc3RhdGljX2Nhc3Q8ZGVyaXZlZCY+KGJSZWYpLmUoKTsKCglyZXR1cm4gMDsKfQ==