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

2021-10-07 16:36:27 字數 756 閱讀 6234

剛開始接觸 c++,看到**中有struct關鍵字,還以為是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。

一句話總結:兩者均可用於定義類,唯一的區別是兩者定義的類的預設訪問許可權有差別。

其實比兩者差別更重要的是,我很好奇為什麼 c++ 中會存在兩個用於定義類的關鍵字,而且看起來兩者之間的區別並沒有大到需要多設定乙個關鍵字,class 似乎完全可以代替 struct 的功能,後來在乙個部落格中找到了答案:

如果不是為了相容c語言,c++中不會有 struct 關鍵字。

這位博主甚至提出了乙個非常絕對的觀點:

如果不是為了相容c語言,或無需傳參給c程式,不要在c++中使用 struct 定義類。

在搞清楚為什麼存在兩個關鍵字之後,再來理解兩者之間的區別就變得目的明確、清晰易懂了。下面摘錄《c++ primer》書中原文:

類可以在它的第乙個訪問說明符之前定義成員,對這種成員的訪問許可權依賴於類的定義方式。如果我們使用 struct 關鍵字,則定義在第乙個訪問說明符之前的成員是 public 的,相反,如果我們使用 class 關鍵字,則這些成員是 private 的。

出於統一程式設計的考慮,當我們希望定義的類的所有成員是 public 的時,使用 struct;反之,如果希望成員是 private 的,使用 class。

C 中關鍵字Struct和Class的區別

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

C 中as和is關鍵字

一.as 運算子用於在相容的引用型別之間執行某些型別的轉換。例如 static void main string args else console.readline 結果 not a string hello not a string class base class derived base c...

關鍵字class與struct

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