我列出了下面的测试代码:
class Father
{
public:
virtual
void show()
{
cout<<"Father show()"<<endl;
cout<<typeid(*this).name();
}
};
class Son : public Father
{
public:
void show()
{
cout<<"Son show()"<<endl;
cout<<typeid(*this).name();
}
};
int main(int argc,char argv[])
{ typeid(*this).name() 结果:
//Father中的show()不是虚函数
// Son s;
// s.Father::show(); // father
//Son s;
//s.show(); //Son
//Father *p=new Father ;
// p->show(); //father
//Father *p=new Son;
//p->show(); //father
//Father *p=new Son;
//p->Father::show(); //father
//修改Father中的show()为虚函数
//Son s;
//s.Father::show(); //son
//Son s;
//s.show(); //son
//Father *p=new Father ;
//p->show(); //father
//Father *p=new Son ;
//p->show(); //Son
//Father *p=new Son;
//p->Father::show(); //Son
我表示我没有看懂! 本来我理解的是 this指向的是实际指向的对象,
比如 : Father *p=new Son;
p->Father::show();
this 指向的就是Son 结果 输出的是:father!
我对比了上面的输出结果,发现在 virtual 和 非virtual的输出结果不一样!
比如:
Father *p=new Son;
p->Father::show();
在show()非 virtual 下 输出是 father
在 virtual 下是 Son!
实在不明白,请解释一下!
看了其他帖子 说的是 指向的 : 指向对象本身! 这个对象本身是什么? |