構造函數爲何不能爲虛函數?

 

假設有以下代碼:函數

       class A{對象

    A(){}繼承

};class

 

    class B:public A{構造函數

    B():A(){}vi

};

 

int main(){

    B b;

    B *pb=&b;

}

 

則構造B類對象時:

   一、根據繼承的性質,構造函數的執行順序是:

    A()B()

    二、根據虛函數的性質,若是A的構造函數爲虛函數,且B類也給出了構造函數,則應該只執行B類的構造函數,再也不執行A類的構造函數,這樣A就不能構造了

    三、這樣1和2發生了矛盾

        另外,virtual函數的是不一樣的類型的對象產生不一樣動做,如今對象還沒產生,如何使用virtual函數來完成你想要的動做?

 

轉《王道》

相關文章
相關標籤/搜索