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 求的是表达式的静态类型.
所以,,,看书吧..