類和結構的區別

2022-07-20 10:27:09 字數 742 閱讀 5308

區別如下:

1.儲存型別:結構是值型別,儲存在棧上。類是引用型別,儲存在棧上和堆上,堆上儲存真實資料,棧上儲存儲存位址,修改乙個引用的值,另乙個相同的引用的值就會發生改變。

2.繼承性:類是可以繼承的,它可以繼承其他的類或者介面,也可以被繼承,並且,類的許多特性是通過繼承來展現的,要阻止類的繼承,必須顯示的宣告sealed。結構沒有繼承:它不能繼承另乙個結構或者類,也不能被繼承。也正因為如此,結構不能有抽象成員。雖然結構沒有明確的用sealed宣告,可是結構是隱式的。結構能夠繼承介面,方法和類繼承介面是一樣的

3.初始化:類可以在宣告的時候初始化,結構不能在申明的時候初始化(不能在結構中初始化字段),否則報錯。

4.建構函式:類和結構都有自己預設的建構函式。在類中,一旦我們編寫了帶引數建構函式,預設建構函式就不存在了。當我們要呼叫不帶引數的建構函式來初始化物件時,我們必須再自己編寫乙個不帶引數的建構函式。但是在結構中,始終存在乙個不帶引數的預設建構函式,並且,這個建構函式是不可替代的,不能重寫,也不能覆蓋,在結構中,我們只能編寫帶引數的建構函式,不能編寫不帶引數的建構函式

5.析構函式:類有析構函式,但是結構沒有析構函式

6.關鍵字:在類中可以使用但是在結構中限制使用的關鍵字有:abstract、sealed、protected;static關鍵字可以用在類名前面用來宣告靜態類,但是不能用在struct前面,不存在靜態結構

類用new來例項化物件,分配記憶體,需要使用new返回位址及分配空間,而結構用new是初始化,結構是值型別,申明時就已經分配記憶體了

類和結構的區別?

類 類是引用型別在堆上分配,類的例項進行賦值只是複製了引用,都指向同一段實際物件分配的記憶體 類有構造和析構函式 類可以繼承和被繼承 結構 結構是值型別在棧上分配 雖然棧的訪問速度比較堆要快,但棧的資源有限放 結構的賦值將分配產生乙個新的物件。結構沒有建構函式,但可以新增。結構沒有析構函式 結構不可...

類和結構的區別

結構在以下幾個重要方面與類不同 結構是值型別 參見11.3.1小節 所有結構型別都隱式地繼承自類system.valuetype 參見11.3.2小節 對結構型別的變數進行賦值,將建立所賦的值的乙個 副本 參見11.3.3小節 結構的預設值的生成方式為 將所有值型別的域設定為它們的預設值,並將所有引...

結構和類的區別

類是引用型別,是儲存在託管堆中的。通過定義類,我們可以在資料的生存期上得到很高的靈活性,但是也會讓程式的效能有一定的損失。雖然這種損失很小,但當我們只需要定義乙個很小的結構時,用類來定義就有些浪費,對於這樣的問題,c 有相對應的方案來解決,那就是 結構 struct 結構與類的區別 1 結構是值型別...