如果在 Parent 中声明了任何重载函数,我需要了解为什么 C++ 不允许在 Child 中访问 Grandparent 重载函数。考虑以下示例:
class grandparent{
public:
void foo();
void foo(int);
void test();
};
class parent : public grandparent{
public:
void foo();
};
class child : public parent{
public:
child(){
//foo(1); //not accessible
test(); //accessible
}
};
这里,两个函数 foo() 和 foo(int) 是 Grandparent 中的重载函数。但是 foo(int) 是不可访问的,因为 foo() 是在 Parent 中声明的(不管它声明的是公共的、私有的还是受保护的)。但是, test() 是可访问的,这根据 OOP 是正确的。
我需要知道这种行为的原因。