避免成员函数的参数名与成员变量名相同
程序员文章站
2024-03-22 10:38:04
...
例如下面这个简单代码:
class Test{
private:
int action=0;
public:
void set_action(int action){
action = action; //这条语句并不会将成员变量action的值设为想要的。
}
int get_action(){
return action;
}
};
int main()
{
Test t;
t.set_action(2);
cout << t.get_action(); //输出结果为0,而非2
return 0;
}
感觉这种错误编译器应该是可以规避的,但不知道为什么都不会报错。所以这种bug非常可怕。
所以要么尽量避免这种参数名与成员名相同的情况,或者在用到成员变量的地方在前面加this->明确指明。
在函数参数前限定const有助于发现这种错误。
上一篇: mysql存储过程repeat循环给多个表名相似的表添加相同字段
下一篇: assert断言
推荐阅读