以下面的课程为例
class A
{
int m_c;
public:
void B(int C);
void C();
};
如果我使用-Wshadow
参数
memberFuncArg.cpp: In member function ‘void A::B(int)’:
memberFuncArg.cpp:12:16: warning: declaration of ‘C’ shadows a member of 'this' [-Wshadow]
void A::B(int C)
^
使用参数将成员函数隐藏到这样的另一个成员函数会产生什么后果?
答案 0 :(得分:3)
使用参数
遮蔽成员函数会产生什么后果
结果是,读取代码的程序员可能会对C
引用哪个实体感到困惑。他们可能已经习惯了C
是一个成员函数的事实,并且合理地(但错误地)期望在B
内也是如此。
当参数不是类型int
时,结果会更糟,但是可以使用与成员函数相同的参数调用的其他类型。然后,混乱的程序员会读取或写入C()
并期望它调用成员函数,但行为会与预期的不同。