C ++:原始成员与继承成员的优先级?

时间:2017-06-02 20:33:41

标签: c++ inheritance

如果来自Parent类的继承的foo()函数与子类中完全相同的头函数foo()之间似乎存在命名冲突,为什么该程序不会出错?

这是代码:

class MonthlyResult {

FilterType type
String typeId
Integer year
Integer january = 0
Integer february = 0
Integer march = 0
Integer april = 0
Integer may = 0
Integer june = 0
Integer july = 0
Integer august = 0
Integer september = 0
Integer october = 0
Integer november = 0
Integer december = 0

继承的函数是否是Child中具有较低优先级的成员?

1 个答案:

答案 0 :(得分:4)

  

如果似乎存在命名冲突,为什么该程序不会出错?

没有错误,因为没有命名冲突。在C ++中,您可以在不同的命名空间中定义同名的标识符。子类的名称​​隐藏(这是技术术语)父类的名称。这意味着非限定查找将找不到父类的隐藏名称。仍然可以通过限定查找找到它们。一个例子:

void Child::foo() {
    Parent::foo();
}