?結構(struct) 與 類(class)
結構與類很相似,都表示可以包含數據成員和函數成員的數據結構。與類不同的是,結構是值類型并且不需要堆分配。結構類型的變量直接包含結構的數據,而類類型的變量包含對數據的引用(該變量稱為對象)。 struct 類型適合表示如點、矩形和顏色這樣的輕量對象。盡管可能將一個點表示為類,但結構在某些方案中更有效。在一些情況下,結構的成本較低。例如,如果聲明一個含有 1000 個點對象的數組,則將為引用每個對象分配附加的內存。結構可以聲明構造函數,但它們必須帶參數。聲明結構的默認(無參數)構造函數是錯誤的。總是提供默認構造函數以將結構成員初始化為它們的默認值。在結構中初始化實例字段是錯誤的。在類中,必須初始化實例對象. 使用 new 運算符創建結構對象時,將創建該結構對象,并且調用適當的構造函數。與類不同的是,結構的實例化可以不使用 new 運算符。如果不使用 new,那么在初始化所有字段之前,字段將保持未賦值狀態且對象不可用。對于結構,不像類那樣存在繼承。一個結構不能從另一個結構或類繼承,而且不能作為一個類的基。但是,結構從基類 Object 繼承。
結構可實現接口,其方式同類完全一樣。
一個是值類型(結構),一個是引用類型(類),結構在傳遞的時候如果沒有指定ref,則傳遞的是內存中的一分副本,而class則是傳遞對他的引用。
類在堆中,結構在棧中,類傳遞的是類在堆中的地址,而結構是在棧中另復制了一個傳遞,你改變傳遞過來的結構不會影響原結構。而類是引用,共用一塊內存,會改變堆中類的內容.?
??