C++中,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。