假設有以下代碼:函數
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函數來完成你想要的動做?
轉《王道》