我正在阅读这本书,但我无法理解这一点:
如果B::f(int)
隐藏A::f()
,为什么不pa1->f();
给出错误?
名称隐藏不是意味着该功能f()
不存在class B
吗?如果pa1
指向class B
then的对象pa1->f();
应该会导致错误b.f()
!
请解释一下,因为我无法通过书理解!提前致谢!
#include <iostream>
using namespace std;
struct A {
virtual void f() { cout << "Class A" << endl; }
};
struct B: A {
void f(int) { cout << "Class B" << endl; }
};
struct C: B {
void f() { cout << "Class C" << endl; }
};
int main() {
B b; C c;
A* pa1 = &b;
A* pa2 = &c;
// b.f();
pa1->f();
pa2->f();
}