struct和class的區別

2021-08-25 02:21:31 字數 771 閱讀 8726

c++被稱為「c with class」,可見在c++中class是多麼重要,與class類似的乙個結構就是struct了,struct最早是在c語言中出現的,在c++中對struct的功能也進行了擴充套件,下面就來說一說struct和class的區別吧:

1、預設的繼承許可權

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

2、關於預設訪問許可權

class中預設的成員訪問許可權是private的,而struct中則是public的。

3、關於大括號初始化問題

struct在c語言中:

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

例如:

struct test

;//初始化

test a=;//完全可以

在c++中class和struct的區別:

在c++中對struct的功能進行了擴充套件,struct可以被繼承,可以包含成員函式,也可以實現多型,當用大括號對其進行初始化需要注意:

4、關於模板

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

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