C 中Class和Struct的區別

2021-10-24 18:15:50 字數 1041 閱讀 5583

引用一段關於class和struct的定義。

class和struct最本質的區別是class是引用型別,而struct是值型別,它們在記憶體中的分配情況有所區別。

什麼是class?

class(類)是物件導向程式設計的基本概念,是一種自定義資料結構型別,通常包含字段、屬性、方法、屬性、建構函式、索引器、操作符等。在.net中,所有的類都最終繼承自system.object類,因此是一種引用型別,也就是說,new乙個類的例項時,在堆疊(stack)上存放該例項在託管堆(managed heap)中的位址,而例項的值儲存在託管堆(managed heap)中。

什麼是struct?

1,class 是引用型別,structs是值型別

2,當你例項化乙個class,它將建立在堆上。而你例項化乙個struct,它將建立在棧上

3,你使用的是乙個對class例項的引用。而你使用的不是對乙個struct的引用。(而是直接使用它們)

4,當我們將class作為引數傳給乙個方法,我們傳遞的是乙個引用。struct傳遞的是值而非引用。

5,structs 不可以有初始化器,class可以有初始化器。

6,classes 可以有明顯的無引數構造器,但是struct不可以

7,類使用前必須new關鍵字例項化,struct不需要

8,class支援繼承和多型,struct不支援. 注意:但是struct 可以和類一樣實現介面

9,既然struct不支援繼承,其成員不能以protected 或protected internal 修飾

10,class的構造器不需要初始化全部字段,struct的構造器必須初始化所有字段

11,class可以定義析構器,但是struct不可以

12,class比較適合大的和複雜的資料,struct適用於作為經常使用的一些資料組合成的新型別。 

適用場合:struct有效能優勢,class有物件導向的擴充套件優勢。

用於底層資料儲存的型別設計為struct型別,將用於定義應用程式行為的型別設計為class。如果對型別將來的應用情況不能確定,應該使用class。

稍後舉些例子

C 中struct和class的差別

在c 中,struct和class除了預設訪問控制級別不一樣,其它別無二致,具體怎麼用,純屬於個人習慣。另 在stroustrup c 發明者 的原作中 他自己說的原句是 按照定義,乙個struct就是乙個類,而只是完全公開的類 所以 struct s 等價於class s public 也就是說,...

c 中struct和class的區別

有這麼幾點不同 1.struct 是值型別,class是物件型別 2.struct 不能被繼承,class可以被繼承 3.struct 預設的訪問許可權是public,而class預設的訪問許可權是private.4.struct不能由程式設計師申明建構函式,即使是預設 不帶引數 的建構函式,同樣也...

C 中 struct 和 class 的區別

從語法上,class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。...