当局部变量影响另一个变量时,C ++编译器会发出警告。 例如https://godbolt.org/g/TYYf8F
但是,当派生类的成员隐藏基类的成员时,没有一个主要的C ++编译器会发出警告:
i
请参阅https://godbolt.org/g/fBMUAd
背后有原因吗?
答案 0 :(得分:0)
虚拟是函数调用者中决定要调用哪个函数的机制。它不会使函数以某种方式表现“虚拟”。由于您没有覆盖函数B :: memberVar(),因此它仍在调用A :: memberVar(),它的行为与A的任何其他成员函数相同。