今天遇到一個內存訪問錯誤。一般的,如下代碼不會出現內存訪問錯誤:
#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;
}
可能原因是沒有虛函數表。