【发布时间】:2013-05-06 18:56:45
【问题描述】:
我正在尝试决定是否对我的问题使用多态性。下面是一个类似于我为这个问题而创建的问题的虚拟问题:
假设我有一个派生类 Rectangle、Triangle 和 Circle 的基类 Shape。它们都实现了一个 Area() 函数。我有 n 个形状向量; vector<Shape*> v_1, v_2, v_3, ..., v_n。我想要的输出是vector<Rectangle*> maxrec,它存储每个v_1, v_2, ..., v_n 中最大区域的形状,只有当它是一个矩形时。 (比如v_i中的最大面积Shape是一个Rectangle,我把它加到maxrec中,如果不是,我就不加了。)
由于输入是vector<Shape*>,在将Shape* 元素添加到Rectangle* 元素之前,是否可以将其转换为maxrec?还是我在这里遗漏了设计缺陷?多态性合适吗? (算法部分我没有问题,只是多态设计部分。)
【问题讨论】:
标签: c++ polymorphism