面試Struct 與 class 的區別

2021-08-20 18:32:05 字數 642 閱讀 1044

面試官問這兩個區別

乙個值型別    乙個引用型別

乙個是存在棧上    乙個存在堆裡 棧裡只存個引用

結構裡的成員不能初始化值    類可以

結構沒建構函式  類有建構函式

結構不能繼承  類可以

面試官再問 結果傳入方法修改後外部的結構值多少

struct astruct

astruct a = new astruct()

void teststruct(astruct a)

a.x = ?

我沒經歷過這個情況 說外面也是5 回來一試不對

我只碰到過這個情況

vecter2 v2 = new vecter2()

v2.x = 5; //這種操作還是同乙個結構

vecter2 v3 = v2; //一賦值就是另乙個結構了與v2沒什麼關係了 相當於另乙個值了

v3.x=10;//

這時 v2.x 還是5

結構確實讓人疑惑,其實可以理解成每傳遞一次就當是乙個數字傳過去了

所以結構體大的時候頻繁傳遞會產生大量不必要的拷貝,適合輕量資料的情況 如 color vecter2 vecter3

參考:

struct與class的區別

如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class...

class與struct的區別

類與結構的例項比較 類與結構的差別 如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後...

struct與class的區別

如何選擇結構還是類 一 類與結構的示例比較 結構示例 public struct person 類示例 public class testtime 呼叫過程 public class test 從上面的例子中我們可以看到,類的宣告和結構的宣告非常類似,只是限定符後面是 struct 還是 class...