07/10/04 15:37:19
>>252
>>254
class B
{
public:
void mf(){ privmf(); }
private:
virtual void privmf();
};
class D : public B
{
private:
void privmf();
}
int main()
{
D objd;
objd.mf();
return 0;
}
このプログラムでobjd.mf() 内で呼び出される関数がB::privmf()ではなく、
D::privmf()になるのですがなぜですか?
ポインタか参照に対して呼び出されたときにポリモルフィズム機構
が働くと思うのですが。
void mf(){ privmf(); }はvoid mf(){ this->privmf(); }と同じことですが、
このthisポインタが指している実際のオブジェクトの型がクラスDの
場合(上のプログラムの場合)はD::privmf()が呼ばれるということで
しょうか?