小编Dvi*_*aki的帖子

派生类成员遮蔽基类成员的警告

C++ 编译器会在局部变量隐藏另一个变量时发出警告。例如https://godbolt.org/g/TYYf8F

然而,当派生类的成员隐藏基类的成员时,没有一个主要的 C++ 编译器发出警告:

class A
{
    int _memberVar = 2;

  public:
    virtual int memberVar()
    {
        return _memberVar;
    }
};

class B : public A
{
    int _memberVar = 3;
};

int main()
{
    A* pB = new B();
    return pB->memberVar(); // returns 2
}
Run Code Online (Sandbox Code Playgroud)

https://godbolt.org/g/fBMUAd

背后有原因吗?

c++ g++ compiler-warnings visual-c++ clang++

5
推荐指数
1
解决办法
2452
查看次数

标签 统计

c++ ×1

clang++ ×1

compiler-warnings ×1

g++ ×1

visual-c++ ×1