class a
{
int var;
}
class b :public a
{
int var2,var3;
}
int main()
{
a *poi;
poi=new b;
//b *poi2;
//poi2=new a;
return 0
}
在上面的代碼中,我能夠使用指向基類指針變量的派生類類型分配內存。 即a *poi=new b;
但我無法使用指向派生類指針的基類類型分配內存。 即b *poi=new a;
爲什麼我不能使用指向派生類指針的基類類型分配內存?
爲什麼下面的內存分配是不可能的? 它背後的邏輯是什麼?
如果您有一個指向'b'對象的指針,則該對象不應該是一半構造的。 – chris
想一想:如果'b * poi = new a;'是合法的,那麼'poi-> var2 ++;'應該做什麼? – Angew