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

父类的this指针与子类的关系?代码写出来了希望分析下,该怎么处理

2012-04-08 
父类的this指针与子类的关系??代码写出来了希望分析下学C++几天了,在一个视频中看到,说父类中出现的this指

父类的this指针与子类的关系??代码写出来了希望分析下
学C++几天了,在一个视频中看到,说父类中出现的this指针,一旦有子类调用那么这个this指针就是指向派生类的,这句话我想了下大概明白,自己写了个例子不知道能不能支持这句话:

C/C++ code
#include <iostream.h>class Father{public :    Father(int i=0)    {           father=this;//保存this指针为public方便外部调用      cout<<this<<endl;//发现和Son构造函数的地址一致?    }    void Print()    {            cout<<"Father.Print"<<endl;    }    Father *father;};class Son:public Father{public:    Son()    {       cout<<this<<endl;    }    void Print()    {        cout<<"Son.Print"<<endl;    } };Son son;//实例化全局void main(){   Son *_son= (Son*)son.father;//获取这个this指针,强制转化   _son->Print();//看调用的是哪个,如果输出:Son.Print则保存的是派生类的this指针?}

有几个地方有问号希望分析下,或者各位写下比较好的验证代码,谢谢。

[解决办法]
里面包含的地址一致但是this指针的类型是不一致的。在父类的构造函数里面类型就是Father*,在派生类里面就是Son*;
[解决办法]
一般情况下(不是太脑残的编译器),对于简单继承

class A {};
class B : A { int x; };

B的结构实际上和

class B { class A base; int x; };

完全相同

也就是说你有一个A的子类B的对象b,其实就是前面一个A的对象后面接着B自己的数据成员。所以只想b的指针同时也指向这一个a的对象。

但是对于多继承,子类指针和父类指针地址就不一定一样了。
[解决办法]
额 不是说保存哪个this指针,而是说派生类和基类的this指针的类型不同而已。虽然他们指向同一个对象。在多继承的情况下,this指针指向的位置会适当的调整。从而使得所指对象的部分符合this指针的类型
[解决办法]
多重继承 

比较特殊

你的是单继承,两个this的值一样。。。。。

热点排行