【发布时间】:2016-10-26 14:57:03
【问题描述】:
假设我们有这些重载的 C++ 函数:
void paint(Shape s, Color c) {}
void paint(Circle ci, Color c) {}
void paint(Shape s, SolidColor sc) {}
显然,Shape 是 Circle 的父级,Color 是SolidColor 的父级。
如果我这样调用函数:paint(myCircle, mySolidColor) 将调用哪个版本的paint 函数?
通常,当层次结构中有多个参数可以是任何类型时,如何解决具有多个候选解析的方法调用?
(我希望我的问题+示例足够清楚,但如果有歧义请告诉我)
附:还有这个电话呢?
Color* c = create_color(); //returns SolidColor instance
Shape* s = create_shape(); //returns Circle instance
paint(s,c);
将调用哪个版本的paint?
【问题讨论】:
-
很确定你会得到歧义错误。编译器会要求您进行显式转换。
标签: c++ class oop polymorphism overloading