所以目前我有3个类。 Shape
,Square
,Triangle
。 Triangle
和Square
继承自Shape
。在Shape
我有虚拟方法:如何用虚拟方法重载和继承优先
virtual bool myMethod(); virtual bool myMethod(Shape& sha);
,并在例如Triangle
我:
virtual bool myMethod(Square& sqa); virtual bool myMethod(Shape& tri);
现在,在我的主要方法,我有:
Shape* m[3];
m[0] = new Square;
m[1] = new Triangle;
m[2] = new Square;
cout << m[0]->myMethod(*m[1]);
cout << m[0]->myMethod(*m[2]);
当我在第一个cout
中调用它时,它可以正常工作并转到(Shape& tri)
的方法,但第二个方法也转到(Shape& tri)
方法。我明白为什么会发生这种情况,但有什么办法可以使它成为(Square& squ)
而不是Shape
?
谢谢
听起来像访客模式的应用 – erenon