struct B {
void foo () {}
};
struct D : B {
using B::foo;
static void foo () {}
};
int main ()
{
D obj;
obj.foo(); // calls D::foo() !?
}
メンバー メソッドとstatic
メンバー メソッドは、次の 2 つの理由でまったく異なります。
static
メソッドはベースの仮想関数をオーバーライドしませんclass
- 両方のケースの関数ポインターの署名が異なります
メソッドがオブジェクトから呼び出された場合、論理的にメンバ メソッドの方が優先されるべきではありませんか? (C++ ではstatic
、オブジェクトを使用してメソッドを呼び出すことができますが、それはオーバーライドされたメソッドと見なされますか?)