struct和class的區別

2021-10-07 01:13:50 字數 468 閱讀 5713

總結,主要有這麼幾點不同:

1.struct 是值型別,class 是物件型別

2.struct 不能被繼承,class 可以被繼承

3.struct 預設的訪問許可權是public,而class 預設的訪問許可權是private.

4.struct總是有預設的建構函式,即使是過載預設建構函式仍然會保留。這是因為struct的建構函式是由編譯器自動生成的,但是如果過載建構函式,必需對struct中的變數全部初始化。並且struct的用途是那些描述輕量級的物件,例如line,point等,並且效率比較高。class在沒有過載建構函式時有預設的無引數建構函式,但是一被過載些預設建構函式將被覆蓋。

5.struct的new和class的new是不同的。struct的new就是執行一下建構函式建立乙個新例項再對所有的字段進行copy。而class則是在堆上分配一塊記憶體然後再執行建構函式,struct的記憶體並不是在new的時候分配的,而是在定義的時候分配

struct和class的區別

1.值型別與引用型別 結構是值型別 值型別在堆疊上分配位址,所有的基型別都是結構型別,例如 int 對應system.int32 結構,string 對應 system.string 結構 通過使用結構可以建立更多的值型別 類是引用型別 引用型別在堆上分配位址 堆疊的執行效率要比堆的執行效率高,可是...

class和struct的區別

從語法上,在c 中 只討論c 中 class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預...

class和struct的區別

從語法上,在c 中 只討論c 中 class和struct做型別定義時只有兩點區別 一 預設繼承許可權。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理 二 成員的預設訪問許可權。class的成員預設是private許可權,struct預...