C#中基類的構造函數和析構函數為什麼不能被繼承?

常盼飛


1,構造函數和析構函數不能被繼承。構造函數和析構函數是用來處理對象的創建和析構的,它們只知道對在它們的特殊層次的對象做什麼。所以,在整個層次中的所有的構造函數和析構函數都必須被調用而不能被繼承。


2,子類的構造函數會顯示的調用父類的構造函數或隱式的調用父類的默認的構造函數進行父類部分的初始化。
3、析構函數也一樣。它們都是每個類都有的東西,如果能被繼承,那就沒有辦法初始化了。
4 、如果是派生類的對象調用,當然是調用派生類的。
5、 派生類不會沒有這些函數的,前面說的六個特殊函數是c++能夠自動產生的,也就是說即使你不寫這六個函數,c++也會為你補上這六個特殊的函數的默認形式,所以不會出現一個類中沒有這些函數的時候。
6 、 我記得複製構造函數的函數名好像是與類名相同的,他其實就是構造函數。只不過形勢比較特殊,所以你在調用複製構造函數的時候應該是以類名的形式調用的,這不是跟聲明一個類的對象是一樣的嗎??你在聲明一個新的類的對象的時候也不會用到::域操作符吧。把複製構造函數當成構造函數看就可以了,他沒什麼特殊的,也是構造函數的一種。



分享到:


相關文章: