我没有发现任何问题,但我正在使用这个 - >很多,并想知道在进一步发展之前是否存在任何差异。
我在这里看了一篇帖子的评论,我不记得哪个帖子,但该人说了一些关于使用关键词“this”的内容。
就个人而言,我觉得直接使用它比变量好。它使代码更容易和漂亮。
乔
答案 0 :(得分:16)
在大多数情况下没有区别。但有些情况会有所不同:
class foo
{
int i;
void bar() {
int i = 3;
i; // refers to local i
this->i; // refers to the member i
}
};
此外,使用模板,您可能需要使用this->
限定成员,以便延迟名称查找:
template<typename T>
struct A
{
int i;
T* p;
};
template<typename T>
struct B : A<T>
{
void foo() {
int k = this->i; // here this-> is required
}
};
正确执行“两阶段查找”的编译器会在您删除“this-&gt;”时进行投诉它不知道我应该是什么。 “这 - &gt;” 中告诉它它是基类的成员。由于基类依赖于模板参数,因此查找会延迟,直到实例化类模板。
答案 1 :(得分:12)
不,没有真正的区别,它只是一个范围限定符。但是,假设一个方法
void SetFoo( Foo foo )
{
this->foo = foo;
}
其中this-&gt; foo是私人会员。在这里,它允许您获取与类/实例变量同名的参数。
答案 2 :(得分:1)
我发现使用this
会使我的代码更具可读性,但您没有理由这样做。如果查看编译器生成的汇编代码,它应该在功能上(通常字面上)相同。
基本上,当调用函数时,它会传递一个隐藏的参数this
,然后用它来确定哪些变量在哪里。如果直接使用变量,没有this->
,除了使用一些语法糖之外,你什么都不做。
答案 3 :(得分:0)
这有点被问及并回答了C#here,我认为答案(至少是我的)是一样的。这是偏好。