使用函数参数隐藏成员函数

时间:2017-08-21 08:29:29

标签: c++

以下面的课程为例

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)
                ^

使用参数将成员函数隐藏到这样的另一个成员函数会产生什么后果?

1 个答案:

答案 0 :(得分:3)

  

使用参数

遮蔽成员函数会产生什么后果

结果是,读取代码的程序员可能会对C引用哪个实体感到困惑。他们可能已经习惯了C是一个成员函数的事实,并且合理地(但错误地)期望在B内也是如此。

当参数不是类型int时,结果会更糟,但是可以使用与成员函数相同的参数调用的其他类型。然后,混乱的程序员会读取或写入C()并期望它调用成员函数,但行为会与预期的不同。