问题很简单......出于某种原因直接使用 this->yourvariable 或 yourvariable 有什么区别吗?
我没有发现任何问题,但我经常使用这个-> 并且想知道在继续之前是否有任何区别。
我在这里看到了一篇帖子的评论,我不记得是哪个帖子了,但是那个人说了一些关于使用关键字“this”的事情。
就个人而言,我觉得直接使用变量比直接使用更好。它使代码更容易和漂亮。
乔
大多数情况下没有区别。但在某些情况下它会有所不同:
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->”时抱怨它不知道我应该是什么。"this->" 告诉它它是基类的成员。由于基类依赖于模板参数,查找会延迟到类模板被实例化。
不,没有真正的区别,它只是一个范围限定符。但是,假设一个方法
void SetFoo( Foo foo )
{
this->foo = foo;
}
其中 this->foo 是私有成员。在这里,它允许您采用与类/实例变量同名的参数。
我发现 usingthis
使我的代码更具可读性,但没有理由必须这样做。如果您查看编译器生成的汇编代码,它应该在功能上(通常是字面上)相同。
基本上,当函数被调用时,它会传递一个隐藏的参数this
,然后用于确定哪些变量在哪里。如果您直接使用变量,没有 a this->
,那么除了使用一些语法糖之外,您什么也做不了。
这是关于 C#的一种询问和回答,我认为答案(至少我的)是相同的。这是偏好。