c 中struct和class的區別

2021-04-19 09:26:36 字數 854 閱讀 1362

有這麼幾點不同:

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沒有 不同點 建構函式...