我想了解“this”指针。我认为“this”指针指向类对象的值。 然而,在下面的代码,我可以看到的 “this” 指针的不同值:C++:了解“this”指针
#include <stdio.h>
class InterfaceA{
public:
virtual void funa() = 0;
};
class InterfaceB{
public:
virtual void funb() = 0;
};
void globala(InterfaceA* obj){
printf("globalA: pointer: %p\n\r",obj);
}
void globalb(InterfaceB* obj){
printf("globalB: pointer: %p\n\r",obj);
}
class concrete : public InterfaceA, public InterfaceB{
public:
void funa(){
printf("funa: pointer: %p\n\r",this);
globala(this);
globalb(this);
}
void funb(){
printf("funb: pointer: %p\n\r",this);
globala(this);
globalb(this);
}
};
int main(int argc, char *argv[])
{
concrete ac;
ac.funa();
ac.funb();
return 0;
}
这个节目的输出提供:
funa: pointer: 0x7ffff67261a0
globalA: pointer: 0x7ffff67261a0
globalB: pointer: 0x7ffff67261a8
funb: pointer: 0x7ffff67261a0
globalA: pointer: 0x7ffff67261a0
globalB: pointer: 0x7ffff67261a8
任何帮助理解这一点。
谢谢。
我认为你的实际问题是什么时候以及为什么当一个指针的值传递给一个指向一个dif的函数不同阶层。 –
我发现你的问题非常有趣,我非常挣扎,为了不让这个问题得到解决。我发布了一个扩展的答案,其中一些数字试图解释相应(重复)问题中的对象布局。随时检查它,它可能会帮助你! – sestus