學習筆記 類和結構的區別

2021-06-26 06:15:39 字數 868 閱讀 5483

類和結構實際上都是建立物件的模板,每個物件都包含資料,並提供了處理和訪問資料的方法。類定義了類的每個物件(稱為例項)可以包含什麼資料和功能。例如,如果乙個類表示乙個顧客,就可以定義欄位customerid、firstname、lastname和address,以包含該顧客的資訊。還可以定義處理在這些欄位中儲存的資料的功能。接著,就可以例項化表示某個顧客的類的物件,為這個例項設定相關欄位的值,並使用其功能。

class phonecustomer

結構與類的區別是它們在記憶體中的儲存方式、訪問方式(類是儲存在堆上的引用型別,而結構是儲存在棧上的值型別)和它們的一些特徵(如結構不支援繼承)。較小的資料型別使用結構可提高效能。但在語法上,結構與類非常相似,主要的區別是使用關鍵字struct代替class來宣告結構。例如,如果希望所有的phonecustomer例項都分布在棧上,而不是分布在託管堆上,就可以編寫下面的語句:

struct phonecustomerstruct

對於類和結構,都使用關鍵字new來宣告例項:這個關鍵字建立物件並對其進行初始化。在下面的例子中,類和結構的字段值都預設為0:

phonecustomer mycustomer = new phonecustomer();     // works for a class

phonecustomerstruct mycustomer2 = new phonecustomerstruct(); //works for a struct

在大多數情況下,類要比結構常用得多。因此,我們先討論類,然後指出類和結構的區別,以及選擇使用結構而不使用類的特殊原因。但除非特別說明,否則就可以假定用於類的**也適用於結構。

類和結構的區別?

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

類和結構的區別

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

結構和類的區別

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