如果来自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中具有较低优先级的成员?
答案 0 :(得分:4)
如果似乎存在命名冲突,为什么该程序不会出错?
没有错误,因为没有命名冲突。在C ++中,您可以在不同的命名空间中定义同名的标识符。子类的名称隐藏(这是技术术语)父类的名称。这意味着非限定查找将找不到父类的隐藏名称。仍然可以通过限定查找找到它们。一个例子:
void Child::foo() {
Parent::foo();
}