在c ++中确定具有相同变量名的成员的setter的行为?

tob*_*ker 3 c++

从蟒蛇,在那里你会分配与成员即将self关键字我不知道结果会是什么在C++中不使用this关键字,因为编译器会指派成员的照顾.

换句话说,当我这样做时会发生什么:

class SomeClass
{
private:
    int someVariable;

public:
    void setSomeVariable(int someVariable);
};

void SomeClass::setSomeVariable(int someVariable)
{
    someVariable = someVariable;
}
Run Code Online (Sandbox Code Playgroud)

由于编译器没有抱怨,我想知道这是否是按照约定为成员编写访问器的正确方法,并且如果确定了行为(不像例如C++中函数参数的评估)

Bat*_*eba 8

在您的情况下,类成员someVariable被传递给函数的参数遮蔽.

所以你的代码执行一个简单的自我赋值:someVariable = someVariable是一个等价的表达式someVariable.

为了消除歧义,请使用 this->someVariable = someVariable;

(我将承认我m_为班级成员和s_静态成员采用了老式的前缀.但是近年来这种做法已经失宠了,而且几乎是Java中的亵渎.)