虚函数问题

时间:2010-03-11 12:49:58

标签: c++ visual-studio-2008 virtual-functions

我在VSTS 2008中使用原生C ++。关于虚函数的快速问题。在下面的示例中,如果我在类Derived中将Foo声明为“virtual void Foo()”或“void Foo()”,则会有任何差异吗?对将来自类Derived的任何未来类的影响?

class Base
{
public:

    Base()
    {
    }

    virtual void Foo()
    {
        cout << "In base" << endl;
    }
};

class Derived : public Base
{
public:

    Derived()
    {

    }

    void Foo()
    {
        cout << "In derived " << endl;
    }
};

2 个答案:

答案 0 :(得分:9)

没有区别。但为了便于阅读,我始终保持virtual

答案 1 :(得分:4)

不,只要它与基类中的成员函数具有相同的签名,它就会自动变为虚拟。但是,您应该明确地将其设置为虚拟,以避免混淆任何阅读代码的人。