爲什麼這個程序在父類的繼承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
因爲函數是在不同的作用域中定義的? –