Struct和Class的區別

2021-09-18 07:08:51 字數 700 閱讀 8013

從語法上來講,class和struct做型別定義時只有兩點區別:

1.預設繼承許可權,如果不指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理;

2.成員的預設訪問許可權。class的成員預設是private許可權,struct預設是public許可權。以上兩點也是struct和class最基本的差別,也是最本質的差別;

但是在c++中,struct進行了擴充套件,現在它已經不僅僅是乙個包含不同資料型別的資料結構了,它包括了更多的功能。

struct能包含成員函式、有自己的建構函式、可以有析構函式、支援繼承、支援多型、支援private、protected、public關鍵字。

如果是class的父類是struct關鍵字描述的,那麼預設訪問屬性是什麼?

當出現這種情況時,到底預設是public繼承還是private繼承,取決於子類而不是基類。class可以繼承自struct修飾的類;同時,struct也可以繼承自class修飾的類,繼承屬性如下列描述:

class b:a{}; // private 繼承

class a{};

struct b:a{}; // public 繼承

最後,那麼到底是使用struct,還是使用class呢?這個看個人喜好,但是這裡有乙個程式設計規範的問題,當你覺得你要做的更像是一種資料結構的話,那麼用struct,如果你要做的更像是一種物件的話,那麼用class。

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