你想问的是,为什么C++要这么设计,对吧?
按我的理解,C++函数重载里需要找最匹配的函数。
考虑以下场景:
父类foo(#1) foo(#2)
调用父类函数匹配到foo(#1)
现在如果一个子类重写了父亲的foo(#2),用子类对象调用foo,是匹配到父类的foo(#1)呢还是匹配到子类的foo(#2)呢?
前者符合参数最匹配原则,后者则符合调用者字面的意思。
于是这里就产生了一个模糊点。
这个规则正是为了理清这个模糊点。
从好的设计角度讲,要避免出现这种情况。
* 继承绝大多数时候应该只用在is-a关系
* 子类重写父类是一个应该尽量避免的模式
* 同名函数重载不要随便滥用。
【 在 yml123 的大作中提到: 】
: 如题,为什么呢?
: - 来自 水木社区APP v3.4.0
--
FROM 76.126.252.*