b->A::DoSomething()
次の例を考えると、ステートメントだけでなく明示的に使用する必要があるのはなぜb->DoSomething()
ですか?
コンパイラのオーバーロード解決は、私が話しているメソッドを理解するべきではありませんか?
Microsoft VS 2005 を使用しています (注: この場合、仮想の使用は役に立ちません)。
class A
{
public:
int DoSomething() {return 0;};
};
class B : public A
{
public:
int DoSomething(int x) {return 1;};
};
int main()
{
B* b = new B();
b->A::DoSomething(); //Why this?
//b->DoSomething(); //Why not this? (Gives compiler error.)
delete b;
return 0;
}