物件導向之 結構體和類的區別

2021-10-25 09:54:35 字數 589 閱讀 6728

物件導向之 結構體和類的區別

1.結構體是一種值型別,而類是引用型別。值型別用於儲存資料的值,引用型別用於儲存對實際資料的引用。

那麼結構體就是當成值來使用的,類則通過引用來對實際資料操作。

2.結構使用棧儲存(stack allocation),而類使用堆儲存(heap allocation)

棧的空間相對較小.但是儲存在棧中的資料訪問效率相對較高.

堆的空間相對較大.但是儲存在堆中的資料的訪問效率相對較低.

3.類是反映現實事物的一種抽象,而結構體的作用只是一種包含了具體不同類別資料的一種包裝,結構體不具備類的繼承多型特性

4.結構體賦值是 直接賦值的值. 而物件的指標 賦值的是物件的位址

如何選擇結構還是類

1. 堆疊的空間有限,對於大量的邏輯的物件,建立類要比建立結構好一些

2. 結構表示如點、矩形和顏色這樣的輕量物件,例如,如果宣告乙個含有 1000 個點物件的陣列,則將為引用每個物件分配附加的記憶體。在此情況下,結構的成本較低。

3. 在表現抽象和多級別的物件層次時,類是最好的選擇

4. 大多數情況下該型別只是一些資料時,結構時最佳的選擇

Go 物件導向之結構體

說明 1.將一類事物的特性提取出來 比如貓類 形成乙個新的資料型別就是乙個結構體 2.通過這個結構體,可以建立多個變數 例項 物件 3.事物可以是貓類,也可以是其它的類.案例 package main import fmt 定義乙個結構體,類似於類 將cat 的各個字段 屬性,放入到結構體中 typ...

類和結構體區別

c 中類和結構體區別 類是有行動 方法和成員的有機體,而結構體是活生生的有機體。1 值型別和引用型別 類是引用型別,繼承system.object,資料儲存在堆上,結構體值型別,繼承system.valuetype,資料儲存在堆疊上 堆疊上的物件有編譯器自動建立和銷毀,所以堆疊的執行效率要高些,但是...

結構體和類的區別

結構體和類的區別 結構體struct 的預設成員訪問許可權是public 類class的預設成員訪問許可權是private ps 以前總以為struct不能定義成員函式 包括建構函式 析構函式 其實是錯誤的。在c 裡面,class和struct除了上面的不同,其他完全一致。可能有人會想,那為什麼c ...