gpt4 book ai didi

C++ : Understanding "this" Pointer

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:55 32 4
gpt4 key购买 nike

<分区>

我想了解“this”指针。我认为“this”指针指的是类对象的值。但是,在下面的代码中,我可以看到“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

对理解这一点的任何帮助。

谢谢。

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com