有這麼幾點不同:
1.struct 是值型別,class是物件型別
2.struct 不能被繼承,class可以被繼承
3.struct 預設的訪問許可權是public,而class預設的訪問許可權是private.
4.struct不能由程式設計師申明建構函式,即使是預設(不帶引數)的建構函式,同樣也不能有析構的處理部分。這是因為struct的建構函式是由編譯器自動生成的。並且struct的用途是那些描述輕量級的物件,例如line,point等,並且效率比較高。
5.struct的new和class的new是不同的。struct的new就是執行一下建構函式建立乙個新例項再對所有的字段進行copy。而class則是在堆上分配一塊記憶體然後再執行建構函式,struct的記憶體並不是在new的時候分配的,而是在定義的時候分配
下面列舉出微軟提供的例子供大家學習
////struct2.cs
using
system;
class
theclass
struct
thestruct
class
testclass
這個例子的輸出是:
a.x = 1b.x = 5
討論了結構與類的相同之處和差別之後,下面討論如何選擇使用結構還是類:
1.堆疊的空間有限,對於大量的邏輯的物件,建立類要比建立結構好一些
2.結構表示如點、矩形和顏色這樣的輕量物件,例如,如果宣告乙個含有 1000 個
點物件的陣列,則將為引用每個物件分配附加的記憶體。在此情況下,結構的成本較低。
3.在表現抽象和多級別的物件層次時,類是最好的選擇
4.大多數情況下該型別只是一些資料時,結構是最佳的選擇
C 中struct和class的差別
在c 中,struct和class除了預設訪問控制級別不一樣,其它別無二致,具體怎麼用,純屬於個人習慣。另 在stroustrup c 發明者 的原作中 他自己說的原句是 按照定義,乙個struct就是乙個類,而只是完全公開的類 所以 struct s 等價於class s public 也就是說,...
C 中 struct 和 class 的區別
從語法上,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。...
c 中struct和class的區別
struct內資料預設是public型別的,class內資料預設是private型別的。繼續用struct是為了向下相容啊,習慣問題,以後發展會只用class的 你可以 template 但是 template 並不總是可以用的。class中有個預設的this指標,struct沒有 不同點 建構函式...