我想了解「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