結構與類的區別

2021-09-08 21:31:10 字數 1550 閱讀 6535

不能為結構宣告預設建構函式(乙個無引數的建構函式).因為編譯器始終會幫我們生成乙個.在類中只有在沒有自己寫乙個建構函式的前提下,編譯器才 會幫我們生成乙個預設建構函式.在編譯器為結構生成的預設建構函式中,總是將字段設為0,false或者null,這和類是一樣的.然而,在自己寫的乙個 建構函式中(再次提醒,這必須是乙個非預設的建構函式),必須自己負責初始化所有字段,編譯器不會再幫我們初始化它.這意味著必須在結構的所有非預設構造 函式中顯式地初始化所有字段,否則會造成編譯時錯誤.例如,假定把time換成乙個類,那麼下面的例子是能通過編譯的,而且seconds會被悄悄地初始 化為0.但是,由於time是乙個結構,所以它無法通過編譯:

struct time 

public

int hours, minutes, seconds; 

}  修改:

若是將time宣告為乙個類,則可以不用將全部字段初始化,但是不會預設有無引數的建構函式,因此要自己寫乙個無引數的建構函式.

using system; 

using system.collections.generic; 

using system.linq; 

using system.text; 

::", time0.hours, time0.minutes, time0.seconds); 

time time1 = new time(6, 25); 

console.writeline("::", time1.hours, time1.minutes, time1.seconds); 

} catch (exception ex) 

}            

} class time 

//要定義無引數的建構函式,不會預設生成

public time(int hh, int mm) 

//可以不必將所有欄位都初始化,會預設初始化為0

類與結構的區別

一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class 的區別,而且使用時...

結構體與類的區別

結構體是為能夠儲存不同型別的資料而存在的,因為陣列只能夠儲存一種資料型別,而在平時的程式設計中我們需要用到不同資料型別的乙個整體結構,這時就要用到乙個新的資料型別 結構體,來儲存這些不同的資料型別的資料的集合。c語言的結構體中只允許定義資料成員,不允許定義函式成員,c語言沒有訪問控制概念,全部成員是...

c 中結構與類的區別

類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct ...