作业帮 > 综合 > 作业

关于类 this指针的问题

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/06/14 01:49:50
关于类 this指针的问题
有3个类ABC;B 继承 A;C 无关紧要.
C oc;
A的构造函数定义:
CA ::conA(&oc)
{
oc -> func(this);
}
B 的构造函数定义:
CB ::conB(&oc) :conA(oc) {} // 有参继承嘛,我晓得
现在有这样一段代码:
B ob(&oc);
A没有实例化对象,这个this指向的是谁啊!
关于类 this指针的问题
其实继承可以理解为在原基础上再加上一块.你这里的this指向的是个B类实例,但在oc -> func(this);调用时它只把这个B实例看做是A实例,(B新加上的那一块看不见).
再问: 确实指向的是ob;但是不懂是为啥
再答: 指向ob不奇怪啊,任何this都是指向自己这个实例。只不过你可以吧这个实例看做B类,或看做A类而已,就像一个小女孩,我可以把他笼统地看做一个人类,也可以再细一点把她当成个女人,如果再细一点就当成小女孩。看的角度不同而已,但看到的还是这个具体的小女孩。
再问: 我想了解下,ob定义的时候,产生了一个指向ob的this,之后调用父类的构造函数的时候,这个this如何传递过去的呢?
原谅我这么固执。。。
再答: this指针不用传,你可以认为它的位置是固定的,就如同代码中任何一个地方都可以调用CPU的AX寄存器一样。这个是由编译器给你搞定的。不会有错,代码中任何用到this指针的地方,编译器都会为你找到这个实例的地址