- 论坛徽章:
- 0
|
class PurvitualBase1{
public:
virtual PurvitualBase1* new_expr(){return new PurvitualBase1();};
virtual PurvitualBase1* clone(){return new PurvitualBase1(*this);};
private:
int b;
};
class PurvitualDeriv1: public PurvitualBase1{
public:
virtual PurvitualDeriv1* new_expr(){return new PurvitualDeriv1();};
virtual PurvitualDeriv1* clone(){return new PurvitualDeriv1(*this);};
private:
int bb;
};
void user2(PurvitualBase1 *pb, PurvitualDeriv1 *pd)
{
PurvitualDeriv1 *pd2 = pd->clone();
PurvitualDeriv1 *pd3 = pb->clone();
pd2->output();
pd3->output();
}
PurvitualDeriv1 testv1;
PurvitualBase1 *ptestpb1 = &testv1;
user2(ptestpb1, &testv1); //为什么这个函数调用时,user2中的虚函数clone没有用子类的clone,却用了父类的clone呢?按理说应该是虚函数调用子类的啊 |
|