什么是'this'指针?

use*_*809 15 c++ pointers class this

我是C++的新手,我不明白this指针在以下场景中的作用:

void do_something_to_a_foo(Foo *foo_instance);


void Foo::DoSomething()
{
  do_something_to_a_foo(this);
}
Run Code Online (Sandbox Code Playgroud)

我从别人的帖子里抓住了这个帖子.

有什么this意义?我糊涂了.该函数没有输入,那么在this做什么?

Tel*_*tty 32

this 指当前的对象.

关键字this标识特殊类型的指针.假设你创建了一个名为对象xclass A,并class A具有非静态成员函数f().如果调用该函数x.f(),则存储this体中的关键字f()的地址为x.


Nik*_*lis 8

简短的回答是,这this是一个特殊的关键字,用于标识"此"对象 - 您当前正在操作的对象.更长,更复杂的答案是这样的:

当你有一个class,它可以有两种类型的成员函数:static和非static.非static成员函数必须在类的特定实例上运行,并且它们需要知道该实例的位置.为了帮助他们,该语言定义了一个隐式变量(即在需要时自动为您声明而不需要执行任何操作的变量),该变量将被调用this并自动指向该类的特定实例.成员函数正在运行.

考虑这个简单的例子:

#include <iostream>

class A
{
public:
    A() 
    { 
        std::cout << "A::A: constructed at " << this << std::endl;
    } 

    void SayHello()
    {
        std::cout << "Hi! I am the instance of A at " << this << std::endl;
    }
};

int main(int, char **)
{
    A a1;
    A a2;

    a1.SayHello();        
    a2.SayHello();

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译并运行它时,请注意和this之间的值不同.a1a2