天天看點

類(class)與結構(struct)的差別?

類(class)與結構(struct)的差別?

易道雲出品

今天小編和大家一起談談類(class)與結構(struct)的差別?

類(class)與結構(struct)的差別?

(1)預設的繼承通路權限: struct是public的,class是private的;

(2)class是引用類型,struct是值類型;

(3)class可以繼承類、接口和被繼承,struct隻能繼承接口,不能被繼承;

(4)class有預設的無參構造函數,有析構函數,struct沒有預設的無參構造函數,且隻能聲明有參的構造函數,沒有析構函數;

(5)class可以使用abstract和sealed,有protected修飾符,struct不可以用abstract和sealed,沒有protected修飾符;

(6)class必須使用new初始化,結構可以不用new初始化;

(7)class執行個體由垃圾回收機制來保證記憶體的回收處理,而struct變量使用完後立即自動解除記憶體配置設定。

從職能觀點來看,class表現為行為,而struct常用于存儲資料;

作為參數傳遞時,class變量以按址方式傳遞,而struct變量是以按值方式傳遞的。

類(class)與結構(struct)的差別?

如何選擇使用結構還是類:

(1)堆棧的空間有限,對于大量的邏輯的對象,建立類要比建立結構好一些;

(2)結構表示如點、矩形和顔色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則将為引用每個對象配置設定附加的記憶體。在此情況下,結構的成本較低;

(3)在表現抽象和多級别的對象層次時,類是最好的選擇;

(4)大多數情況下該類型隻是一些資料時,結構是最佳的選擇。

今天就談到這裡,明天再見!!

類(class)與結構(struct)的差別?

繼續閱讀