次のコードを検討してください。
struct A
{
void foo( const char * ) { cout << __PRETTY_FUNCTION__ << endl; }
A & operator = ( const A & ) { cout << __PRETTY_FUNCTION__ << endl; return * this; }
};
struct B : public A
{
void foo( const char * ) { cout << __PRETTY_FUNCTION__ << endl; }
A & operator = ( const A & other ) { cout << __PRETTY_FUNCTION__ << endl; return * this; }
};
次に、このメンバーを呼び出すと、次のようになります。
B b;
b.foo( "hehe" );
b = b;
印刷されます:
void B::foo( const char *)
A& A::operator=(const A&)
質問: なぜ B::foo は A::foo を隠しますが、B::operator= は隠しませんか?