今天遇到一个内存访问错误。一般的,如下代码不会出现内存访问错误:
#include<iostream>
using namespace std;
class A
{
public:
void print();
};
void A::print()
{
cout << "A::print"<<endl;
//没有访问成员数据
}
int main()
{
A *pA = NULL;
pA->print();
return 0;
}
但是,这段代码却有内存错误:
#include<iostream>
using namespace std;
class A
{
public:
virtual void print();
};
void A::print()
{
cout << "A::print"<<endl;
//没有访问成员数据,但是虚函数
}
int main()
{
A *pA = NULL;
pA->print();
return 0;
}
可能原因是没有虚函数表。