直接上代码
- 第一种情况:
#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 = ∈
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 = ∈
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 = ∈
pVirt->func();
return 0;
}
输出:
CInstance::func()
好吧,从代码和输出结果已经看出不同了,自己体会吧。