struct與class的區別


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。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。