首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

this指针指向了什么!(本质),该怎么解决

2012-05-28 
this指针指向了什么!(本质)我列出了下面的测试代码:C/C++ codeclass Father{public:virtualvoidshow(){cou

this指针指向了什么!(本质)
我列出了下面的测试代码:

C/C++ code
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!




实在不明白,请解释一下!

看了其他帖子 说的是 指向的 : 指向对象本身! 这个对象本身是什么?

[解决办法]
有个东西叫静态类型,还有个东西叫动态类型.

typeid 求的是表达式的静态类型.

所以,,,看书吧..

热点排行