struct B {
void foo () {}
};
struct D : B {
using B::foo;
static void foo () {}
};
int main ()
{
D obj;
obj.foo(); // calls D::foo() !?
}
Метод Member и метод члена static полностью различаются по двум причинам:
-
staticне отменяет виртуальные функции в базеclass - подпись указателя функции для обоих случаи разные
Когда метод вызывается объектом, не должен ли метод-член иметь более высокое предпочтение логически? (Только то, что С++ позволяет вызывать метод static с помощью объекта, будет ли он рассматриваться как переопределенный метод?)