iOS(OC swift) 結構體和類的區別

2021-08-18 20:25:21 字數 989 閱讀 1384

相同點:都可以將多個資料封裝為乙個整體。

不同點:

1. 結構體只能封裝資料,而類還可以封裝行為。

2. 賦值 :結構體是(拷貝),物件之間是(位址)

3. 結構體變數分配在棧空間(如果是乙個區域性變數的情況下),而物件分配在堆空間

棧空間特點:空間相對較小,但是儲存在棧中的資料訪問的效率稍高一點

堆空間特點:空間相對較大,但是儲存在堆中的資料,效率低一些

應用場景:1. 如果封裝的這個資料,不僅有資料還有方法,只能使用類。

2. 如果表示實體,沒有行為,光有屬性:

如果屬性較少,只有幾個的情況下,就定義為結構體,分配在棧,提高執行效率。

如果屬性較多,就不要定義為結構體,因為這樣結構體變數會在棧中佔據很大一塊空間,範圍影響效率。

共同點:

a.定義儲存屬性

b.定義函式

c.定義下標,使用下表訪問自己的值

d.定義初始化設定自己的初始化狀態

e.擴充套件自己的功能

f.實現協議提供某種特定的標準功能

a.類可以繼承,結構體不能繼承

b.類能夠在執行時檢查和解釋類例項的型別

c.deinitializers使乙個類的例項來釋放任何資源分配

d.類有引用計數,允許物件被多次引用

結構體和類

1.c的結構體和c 結構體的區別 1.1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。1.2 c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected,private三...

類和結構體

c的結構體和c 結構體的區別 表面區別 1.c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。2.c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected,private三種...

類和結構體

結構體和類的區別 1.c的結構體和c 結構體的區別 1.1 c的結構體內不允許有函式存在,c 允許有內部成員函式,且允許該函式是虛函式。所以c的結構體是沒有建構函式 析構函式 和this指標的。1.2 c的結構體對內部成員變數的訪問許可權只能是public,而c 允許public,protected...