#include <iostream>
class Foo
{
public:
static void func() { std::cout << "Foo::func" << std::endl; }
};
class Bar : public Foo
{
public:
static void func() { std::cout << "Bar::func" << std::endl; }
};
int main(void)
{
Foo::func(); // Works
Bar::func(); // Works
Foo foo;
Bar bar;
foo.func(); // Works
bar.func(); // Works
bar.Foo::func(); // Works
Foo* foobar = new Bar;
foobar->func(); // Not the result expected
// Because no override.
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKY2xhc3MgRm9vCnsKcHVibGljOgogIHN0YXRpYyB2b2lkIGZ1bmMoKSB7IHN0ZDo6Y291dCA8PCAiRm9vOjpmdW5jIiA8PCBzdGQ6OmVuZGw7IH0KfTsKCmNsYXNzIEJhciA6IHB1YmxpYyBGb28KewpwdWJsaWM6CiAgc3RhdGljIHZvaWQgZnVuYygpIHsgc3RkOjpjb3V0IDw8ICJCYXI6OmZ1bmMiIDw8IHN0ZDo6ZW5kbDsgfQp9OwoKaW50IG1haW4odm9pZCkKewogIEZvbzo6ZnVuYygpOyAgICAgLy8gV29ya3MKICBCYXI6OmZ1bmMoKTsgICAgIC8vIFdvcmtzCgogIEZvbyBmb287CiAgQmFyIGJhcjsKCiAgZm9vLmZ1bmMoKTsgICAgICAgIC8vIFdvcmtzCiAgYmFyLmZ1bmMoKTsgICAgICAgIC8vIFdvcmtzCiAgYmFyLkZvbzo6ZnVuYygpOyAgIC8vIFdvcmtzCgogIEZvbyogZm9vYmFyID0gbmV3IEJhcjsKCiAgZm9vYmFyLT5mdW5jKCk7ICAgICAgLy8gTm90IHRoZSByZXN1bHQgZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIG5vIG92ZXJyaWRlLgogIHJldHVybiAwOwp9