来自 python,在那里你可以用 self
关键字分配一个成员,我想知道在 C++ 中不使用 this
关键字会有什么行为,因为编译器会照顾分配成员。
换句话说,当我这样做时会发生什么:
class SomeClass
{
private:
int someVariable;
public:
void setSomeVariable(int someVariable);
};
void SomeClass::setSomeVariable(int someVariable)
{
someVariable = someVariable;
}
因为编译器没有提示,我想知道这是否是按照约定为成员编写访问器的正确方法,以及行为是否已确定(与 C++ 中函数参数的求值不同)
最佳答案
在您的例子中,类成员 someVariable
被传入函数的参数隐藏。
所以您的代码正在执行一个简单的自赋值:someVariable = someVariable
是一个等价于 someVariable
的表达式。
为了消除歧义,使用this->someVariable = someVariable;
(我承认,我对类成员采用了老式的 m_
前缀,对静态成员采用了 s_
前缀。但近年来这种做法已经不受欢迎了,这在 Java 中几乎是一种亵渎。)
关于c++ - 具有相同变量名的成员的 setter 行为是在 C++ 中确定的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599708/