覆盖虚函数和覆盖普通成员函数的区别

#include <iostream>
using namespace std;

class CBase
{
public:
    virtual void PureVirtualMethod() = 0;
    virtual void VirtualMethod()
    {
        cout << "Base version of virtual method" << endl;
    }
    void CommonMethod()
    {
        cout << "Base version of common function" << endl;
    }
};

class CDerived : public CBase
{
public:
    void PureVirtualMethod()
    {
        cout << "Derived version of pure virtual method" << endl;
    }
    void VirtualMethod()
    {
        cout << "Derived version of virtual method" << endl;
    }
    void CommonMethod()
    {
        cout << "Derived version of common method" << endl;
    }
};


int main()
{
    CDerived testBase = CDerived();

    CBase *b;
    b = new CDerived();
    b->PureVirtualMethod();
    b->CommonMethod();
    b->VirtualMethod();
}

输出:

Derived version of pure virtual method

Base version of common function

Derived version of common method

类的继承中,对于虚函数的override与直接override是有区别的。

原文地址:https://www.cnblogs.com/bluecoffee/p/3268949.html