C ++:这种多态性是否可行?

时间:2013-05-07 15:42:32

标签: c++ polymorphism

我有这两个类:

class Foo
{
    virtual void Bar2();
    void Bar(){Bar2();};
}

class Foo2 : public Foo
{
    void Bar2();
}

在Foo中调用Bar()函数会使用Foo2或Foo中的Bar2函数吗?我希望它能使用Foo2。

1 个答案:

答案 0 :(得分:3)

它将使用实例化的任何类型的Bar2,如下所示:

Foo2 f2;
f2.Bar(); // Foo2::Bar2 will be called

Foo f;
f.Bar();  // Foo::Bar2 will be called

Foo *pf = new Foo2;
pf->Bar(); // Foo2::Bar2 will be called