struct B {
void foo () {}
};
struct D : B {
using B::foo;
static void foo () {}
};
int main ()
{
D obj;
obj.foo(); // calls D::foo() !?
}
成员方法和static
成员方法完全不同,原因有两个:
static
方法不会覆盖 base 中的虚函数class
- 两种情况的函数指针签名不同
当对象调用方法时,成员方法在逻辑上不应该具有更高的优先级吗?(只是 C++ 允许static
使用对象调用方法,它会被视为重写方法吗?)