为什么这个程序在父类的继承foo()函数和子类中完全相同的头函数foo()之间似乎存在命名冲突时不会出现错误?C++:原始成员与继承成员的优先级?
这是代码:
class Parent {
public:
Parent() {}
protected:
void foo() { std::cout << "foo-of-Parent" << std::endl;}
};
class Child:public Parent {
public:
Child() {};
void foo() { std::cout << "foo-of-Child" << std::endl; }
};
int main(){
Child john;
john.foo();
return 0;
}
是继承的功能与儿童不怎么样的优先级中的一员?
你在那里有*名称隐藏*。你可能想要检查一些很好的C++资源[这里](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。这需要一点努力才能在这里正确解释,所以我建议您检查这些资源 – WhiZTiM
在您的示例中没有继承,因为foo不是虚拟的。因此,调用Child中的foo是因为john是Child类型的。 – germanfr
因为函数是在不同的作用域中定义的? –