c++父類和子類轉化致命的代碼錯誤

最近在工做中,出現了嚴重的代碼錯誤,對象的基類和子類的繼承,代碼大體以下:c++

class A
{
};

class B : public A
{
}

void main()
{
   A* a;(用於子類對象來進行賦值)= new 子類;
   //錯誤代碼以下
  B* b = (B*) a;
  b.方法;
}//在這個過程當中,主要有兩點錯誤:1,在a進行轉換到B並無對a進行類型判斷,a不爲空,則b確定不爲空  2.對b調用本身方法。若是b是非想虛函數,不會崩潰,可是調用本身的虛構函數,則崩潰。本身要多看看c++對象模型和c++ primer書,對對象模型可以瞭解清楚
相關文章
相關標籤/搜索