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标识特殊类型的指针.假设你创建了一个名为对象x的class A,并class A具有非静态成员函数f().如果调用该函数x.f(),则存储this体中的关键字f()的地址为x.
简短的回答是,这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