面向對象之 結構體和類的區別 1.結構體是一種值類型,而類是引用類型。值類型用於存儲數據的值,引用類型用於存儲對實際數據的引用。 那麼結構體就是當成值來使用的,類則通過引用來對實際數據操作。 2.結構使用棧存儲(Stack Allocation),而類使用堆存儲(Heap Allocation) 棧 ...
面向對象之 結構體和類的區別
1.結構體是一種值類型,而類是引用類型。值類型用於存儲數據的值,引用類型用於存儲對實際數據的引用。
那麼結構體就是當成值來使用的,類則通過引用來對實際數據操作。
2.結構使用棧存儲(Stack Allocation),而類使用堆存儲(Heap Allocation)
棧的空間相對較小.但是存儲在棧中的數據訪問效率相對較高.
堆的空間相對較大.但是存儲在堆中的數據的訪問效率相對較低.
3.類是反映現實事物的一種抽象,而結構體的作用只是一種包含了具體不同類別數據的一種包裝,結構體不具備類的繼承多態特性
4.結構體賦值是 直接賦值的值. 而對象的指針 賦值的是對象的地址
如何選擇結構還是類
1. 堆棧的空間有限,對於大量的邏輯的對象,創建類要比創建結構好一些
2. 結構表示如點、矩形和顏色這樣的輕量對象,例如,如果聲明一個含有 1000 個點對象的數組,則將為引用每個對象分配附加的記憶體。在此情況下,結構的成本較低。
3. 在表現抽象和多級別的對象層次時,類是最好的選擇
4. 大多數情況下該類型只是一些數據時,結構時最佳的選擇