struct和class的區別

2021-09-25 15:40:03 字數 608 閱讀 8821

c++中:

(1)struct和class關鍵字都可以定義類,但是struct預設的訪問限定是public,class預設的訪問限定是private。

(2)struct預設是公有繼承(public),class預設是私有繼承(private)。

(3)當struct和class都定義了建構函式,就不能使用大括號對其進行初始化。

(4)若沒有定義建構函式,struct可以使用{}進行初始化,而只有當class的所有資料成員及函式為public時,可以使用{}進行初始化。

(5)struct更合適看成是乙個資料結構的實現體,class更適合看成是乙個物件的實現體。

(6)在模板中,型別引數前面可以使用class或typename,如果使用struct,則含義不同,struct後面跟的是"non-type template parameter「,而class或typename後面跟的是型別引數。

c語言中:

(1)只有struct關鍵字定義結構體,沒有class關鍵字。

(2)struct是一種資料型別,只能定義資料成員,不能定義函式,這是因為c語言是面向過程的,面向過程認為資料和操作是分開的,所以c語言中的struct可以直接使用大括號對所有資料成員進行初始化。

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預...