錯誤:c++空指針訪問virtual成員函數

今天遇到一個內存訪問錯誤。一般的,如下代碼不會出現內存訪問錯誤:

#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;
}
可能原因是沒有虛函數表。

虛函數詳情:http://blog.csdn.net/haoel/article/details/1948051


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