關於C++虛函數和純虛函數

直接上代碼

  • 第一種情況:
#include <iostream>

using namespace std;

class CPureVirtual
{
public:
    virtual void func() = 0;
};

class CVirtual : public CPureVirtual
{
public:
    void func()
    {
        cout<<"CVirtual::func()"<<endl;
    }
};

class CInstance : public CVirtual
{
public:
    void func()
    {
        cout<<"CInstance::func()"<<endl;
    }
};

int main()
{
    CInstance in;
    CVirtual *pVirt = &in;
    pVirt->func();
    return 0;
}

輸出

輸出:
CInstance::func()
  • 第二種情況:
#include <iostream>

using namespace std;

class CPureVirtual
{
public:
    virtual void func() = 0;
};

class CVirtual/* : public CPureVirtual*/
{
public:
    void func()
    {
        cout<<"CVirtual::func()"<<endl;
    }
};

class CInstance : public CVirtual
{
public:
    void func()
    {
        cout<<"CInstance::func()"<<endl;
    }
};

int main()
{
    CInstance in;
    CVirtual *pVirt = &in;
    pVirt->func();
    return 0;
}

輸出:
CVirtual::func()
  • 第三種情況:
#include <iostream>

using namespace std;

class CPureVirtual
{
public:
    virtual void func() = 0;
};

class CVirtual/* : public CPureVirtual*/
{
public:
    virtual void func()
    {
        cout<<"CVirtual::func()"<<endl;
    }
};

class CInstance : public CVirtual
{
public:
    void func()
    {
        cout<<"CInstance::func()"<<endl;
    }
};

int main()
{
    CInstance in;
    CVirtual *pVirt = &in;
    pVirt->func();
    return 0;
}

輸出:
CInstance::func()

好吧,從代碼和輸出結果已經看出不同了,自己體會吧。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章