-2

我有这两个课程:

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

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

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

4

1 回答 1

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
于 2013-05-07T15:45:38.027 回答