最近开发时遇到一个坑,就是成员函数的参数名与成员变量名重名导致赋值失败。
先来看看下面这份代码
class PartUnit
{
public:
PartUnit():userId(0), isRobot(0){}
~PartUnit(){}
void initData(unsigned int userId, int isRobot);
private:
unsigned int userId;
int isRobot;
}
void PartUnit::initData(unsigned int userId, int isRobot)
{
userId = userId;
isRobot = isRobot;
}
乍一看,似乎没啥问题,毕竟构造函数是可以这么写的。然而,这就是一个坑。。。
在成员函数中这样写会导致赋值失败!!!
正确的写法应该是这样:
void PartUnit::initData(unsigned int userId, int isRobot)
{
this->userId = userId;
this->isRobot = isRobot;
}
利用this指针就可以解决这个问题了