请教函数覆盖问题
不好意思只剩18分了.
代码在dev4992中运行正常;
问题:caa类中caa::fcout(int)覆盖父类中的ca::fcout(int),故其虚函数表中没有ca::fcout(int);
那么像p->ca::fcout(2);q->ca::fcout(4);bbb.ca::fcout(8);是如何调用到ca::fcout(int)的?
class ca
{
public:
virtual void fcout(int a){cout<<"ca::"<<a<<endl;}
};
class caa:public ca
{
public:
void fcout(int x){cout<<"caa:"<<x<<endl;}
};
int main(int argc, char *argv[])
{
caa bbb;
ca *p=&bbb;
caa *q=&bbb;
p->fcout(1);//此处调用caa::fcout(int)
p->ca::fcout(2);//调用ca::fcout(int)
q->fcout(3);//调用caa::fcout(int)
q->ca::fcout(4);//调用ca::fcout(int)
bbb.ca::fcout(8);//调用ca::fcout(int)
system("PAUSE");
return EXIT_SUCCESS;
}