我正在阅读这本书,但我无法理解这一点:
如果B::f(int)隐藏A::f(),为什么不pa1->f();给出错误?
名称隐藏不是意味着该功能f()不存在class B吗?如果pa1指向class Bthen的对象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();
}