当我们定义一个类的对象为空时,这时我们调用该对象中的函数,我们会发现当调用非虚函数时仍可以正常调用,而如果要调用虚函数则会报错。如下示例:
class Progress
{
public:
void print(int L)
{
cout << "L = " << L << endl;
}
};
int main()
{
Progress *a = NULL;
a->print(3);
return 0;
}
输出结果如下,可以正常输出:
同样,当我将类成员函数定义为虚函数时:
class Progress
{
public:
virtual void print(int L)
{
cout << "L = " << L << endl;
}
};
会发现编译没有问题,但运行时会报内存错误: