可以使用这个指针吗? [重复]

  可能重复:   有没有理由使用这个 - >   什么时候应该 - >使用?   我什么时候应该明确使用
this
指针? 当使用指向类的指针时,我喜欢在类中的变量前面添加一个
this->
,以便更清楚我正在谈论的变量是在当前类中,而不是临时变量等。所以我的行将会是这样的
if(this->thing > other->thing)
    this->doFoo();
代替
if(thing > other->thing)
    doFoo();
可以添加多余的
this
,还是会降低代码的可读性?     
已邀请:
一致性一致性。 如果你在整个项目的整个项目中使用它来访问成员,我会将
this->
前缀作为有效的编码风格。 我更喜欢为成员使用表示前缀,例如
m_
。我觉得它比明确的 - >:更少刀具和更少的标签汤:
(alpha-this->gamma > this->alpha-gamma)
(alpha-m_gamma > m_alpha-gamma)
(dotNetties已标记为
m_
已过时 - 我在小型C#项目中使用它已经过时了。但无论如何,任何其他不同的前缀也会这样做。) 我已经看到它经常用于帮助intellisense进入装备,或者专门过滤成员 - 这是好的,尽管因为这个原因而留下它是值得怀疑的,特别是如果不能持续使用的话。     
这取决于你的编码风格,但很多人会使用
_myVariable
m_myVariable
myVariable_
区分成员变量与其他变量。 但最重要的是要保持一致     
这是一个风格问题,所以答案是主观的。同样,很多与我一起工作过的人喜欢用
m_
为成员变量添加前缀,以明确它是一个成员。 (
m_foo
就像你的
this->foo
。)然后我确信有人认为这是对宇宙的犯罪。因人而异。使用适用于您和您可能正在使用的任何人的方法。
this->
的一个优点(或缺点,取决于你的问题)是你可以拥有一个同名的变量,既可以是成员,也可以是本地范围内的参数或局部变量,例如:
foo bar;

void f(foo bar)
{
   this->bar = bar;
}
    
如前所述,这主要是风格问题。 我个人不会将它用于数据成员(我使用
m
前缀替代),但我确实将它用于函数: 为了与模板化代码保持一致,可能需要
this
来推迟查找 为清楚起见,为了一目了然地区分它是一种类的方法(可能是一个基类)还是一个独立的功能 我认为,因为你在阅读一些代码时绝对不想跋涉基类的水平,所以
this->
澄清使读者更容易。而且只需输入6个字符。     
我也喜欢这种模式,但我更喜欢托管代码中的“这个”。 - 箭头操作符确实感觉有点吵闹,但是当你提到实例级别的东西时它仍然非常清楚。     
当然你可以做到,此外,编译器会为你添加它。     
通常,当方法参数和成员变量具有相同名称时,使用
this
表示法。 (用于将方法参数与成员变量区分开来) 比如说,
void CMYClass::fun1(int sameName)
{
...
this->sameName = sameName;
}
否则,这只是品味问题......     

要回复问题请先登录注册