#include <iostream>
#include <string>
class t_foo_base
{
public:
t_foo_base(){};
virtual ~t_foo_base(){}
virtual std::string text( void ) const { return( "t_foo_base" ); };
};
class t_foo: public t_foo_base
{
public:
t_foo(){};
virtual std::string text( void ) const override { return( "t_foo" ); };
};
std::string test_foo(t_foo_base p)
{
return p.text();
}
int main()
{
t_foo_base* pBase = new t_foo;
std::cout << test_foo(*pBase);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKY2xhc3MgdF9mb29fYmFzZQp7CnB1YmxpYzoKICAgIHRfZm9vX2Jhc2UoKXt9OwogICAgdmlydHVhbCB+dF9mb29fYmFzZSgpe30KICAgIHZpcnR1YWwgc3RkOjpzdHJpbmcgdGV4dCggdm9pZCApIGNvbnN0IHsgcmV0dXJuKCAidF9mb29fYmFzZSIgKTsgfTsKfTsKCgpjbGFzcyB0X2ZvbzogcHVibGljIHRfZm9vX2Jhc2UKewpwdWJsaWM6CiAgICB0X2Zvbygpe307CiAgICB2aXJ0dWFsIHN0ZDo6c3RyaW5nIHRleHQoIHZvaWQgKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiggInRfZm9vIiApOyB9Owp9OwoKc3RkOjpzdHJpbmcgdGVzdF9mb28odF9mb29fYmFzZSBwKQp7CglyZXR1cm4gcC50ZXh0KCk7Cn0KCmludCBtYWluKCkKewoJdF9mb29fYmFzZSogcEJhc2UgPSBuZXcgdF9mb287CglzdGQ6OmNvdXQgPDwgdGVzdF9mb28oKnBCYXNlKTsKfQ==