struct與class關鍵字在定義類中的區別

2021-06-07 17:22:43 字數 927 閱讀 6077

struct關鍵字是從c語言中繼承過來的,class和struct均可定義類,用它們定義類的唯一差別在於預設的成員保護級別和預設的繼承保護級別(p57--第57頁,2.8--章節2.8;p485,15.2.5):

預設情況下,struct的保護級別為public,而class的保護級別為private。

下面分別就這兩種情況進行舉例:

例1:預設的成員保護級別

struct s_base 

int val;

};class c_base

int val;

};

以上兩個類沒有顯示地使用訪問標號(public, protected, private),類的成員具有預設的保護級別,類s_base成員的保護級別為public,類c_base成員的保護級別為private。相當於如下**:

struct s_base 

int val;

};class c_base

int val;

};

例2:預設的繼承保護級別

struct s_derived : s_base ;

class c_derived : c_base ;

以上兩個類相當於:

struct s_derived : public s_base ;

class c_derived : private c_base ;

references:

《c++ primer中文版第4版》p57, 485

關鍵字class與struct

面試中偶有考官問道 class 和struct 有什麼區別?回答大多千篇一律 嗯,struct 中預設的訪問許可權是 public 而class 中則是private 其實這個回答並不完整。為什麼c 中會存在兩個如此相似的關鍵字?其實 struct 的存在僅僅是為了保證 c 對 c的相容性罷了。如此...

C 中struct關鍵字和class關鍵字的區別

剛開始接觸 c 看到 中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。一句話總結 兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。其實比兩者差別更重要的是,我很好奇為什麼 c 中會存在兩個用於定...

C 中關鍵字Struct和Class的區別

struct和class的區別 今天這篇博文主要講解在c 中關鍵字struct和class的區別。這篇博文,將會系統的將這兩個關鍵字的不同面進行詳細的講解。從語法上來講,class和struct做型別定義時只有兩點區別 1.預設繼承許可權,如果不指定,來自class的繼承按照private繼承處理,...