在使用指向类的指针时,我喜欢this->
在类中的变量前面添加一个,以更清楚地表明我正在谈论的变量是在当前类中,而不是临时变量等。所以我的行将是就像是
if(this->thing > other->thing)
this->doFoo();
代替
if(thing > other->thing)
doFoo();
添加多余的 是否可以this
,或者会降低代码的可读性?
在使用指向类的指针时,我喜欢this->
在类中的变量前面添加一个,以更清楚地表明我正在谈论的变量是在当前类中,而不是临时变量等。所以我的行将是就像是
if(this->thing > other->thing)
this->doFoo();
代替
if(thing > other->thing)
doFoo();
添加多余的 是否可以this
,或者会降低代码的可读性?
一致性一致性一致性。
this->
如果您在整个项目中在访问成员的任何地方都使用它,我认为前缀是一种有效的编码风格。
我更喜欢为成员使用表示前缀,例如m_
. 我觉得它比明确的 this-> 更少切割器和更少的标签汤:
(alpha-this->gamma > this->alpha-gamma)
对比
(alpha-m_gamma > m_alpha-gamma)
(dotNetties 已标记为m_
过时 - 我出于恶意在小型 C# 项目中使用它。但无论如何,任何其他不同的前缀也可以。)
我已经看到它经常用于帮助智能感知启动,或专门过滤成员 - 这没关系,尽管出于这个原因将其保留是有问题的,特别是如果没有始终如一地使用。
这取决于您的编码风格,但是很多人会使用
_myVariable
m_myVariable
myVariable_
区分成员变量。
但最重要的是保持一致
这是一个风格问题,所以答案将是主观的。同样,与我共事过的很多人都喜欢在成员变量前面加上前缀,m_
以表明它是一个成员。(m_foo
就像你的一样this->foo
。)那么我敢肯定,有些人认为这是对宇宙的犯罪。YMMV。使用适合您和您可能与之共事的任何人的方法。
一个优点(或缺点,取决于你问谁)this->
是你可以有一个同名的变量,它既可以是成员,也可以是局部范围的东西,如参数或局部变量,例如:
foo bar;
void f(foo bar)
{
this->bar = bar;
}
如前所述,这主要是风格问题。
就我个人而言,我不将它用于数据成员(我使用m
前缀替代),但我确实将它用于功能:
this
可能需要延迟查找我认为,由于您在阅读一些代码时绝对不想在基类的各个级别上艰难跋涉,因此this->
澄清使读者更容易。只需再输入 6 个字符。
我也喜欢这种模式,但我更喜欢托管代码中的“this”。- 箭头操作符确实感觉有点吵,但是当你提到实例级的东西时它仍然很清楚。
当然你可以这样做,此外,编译器会为你添加它。
this
通常,当您的方法参数和成员变量具有相同名称时,您会使用符号。(区分方法参数和成员变量)
比如说,
void CMYClass::fun1(int sameName)
{
...
this->sameName = sameName;
}
否则,只是口味问题...