可能重复:
在C++中过度使用此代码气味
多年前,我养成了在访问成员变量时使用this->的习惯.我知道这不是绝对必要的,但我认为它更清楚.
然后,在某些时候,我开始更喜欢更简约的风格,并停止了这种做法......
最近我被一个更年轻的同龄人问到我是否认为这是一个好主意而且我发现我对自己的偏好没有真正的答案...这真的是一个完全风格的选择还是有真正的原因为什么不在成员变量访问前加上this->更好?
GMa*_*ckG 39
虽然这是一个完全主观的问题,但我认为一般的C++社区不愿意这样做this->.它的混乱,完全不需要.
有些人用它来区分成员变量和参数.一个更常见的做法是只用一些前缀的成员变量,就像一个下划线或m,或m_等
在我看来,这更容易阅读.如果你需要this->区分变量,你做错了.要么改变参数名称(从x至newX)或具有一个成员变量的命名约定.
一致性是首选,因此this->在需要区分的少数情况下不要强迫自己(注意在初始化列表中这是完全明确定义的:x(x)其中成员x由参数初始化x),只需获得更好的变量名称.
这留下了我唯一使用的时间this:当我实际需要实例的地址时,无论出于何种原因.
我只记得这样做
delete this;
Run Code Online (Sandbox Code Playgroud)
例如,函数参数和实例变量之间存在歧义.
当然应避免这种含糊不清!最好更改函数参数名称,而不是为实例参数的所有访问产生开销(即前缀),尽管......
如果变量位于您正在使用的范围"上方"的范围内,则它可用.
int i;
public void foo() {
int i;
i = 3; // assign local variable
this->i = 4; // assign global variable
}
Run Code Online (Sandbox Code Playgroud)
除了访问另一个范围内的变量,我自己也同意你的"简约选择".少即是多.:-)