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

剛開始接觸 C++,看到代碼中有 struct 關鍵字,還以爲是用了結構體,結果後來發現 struct 和 class 一樣都用於類的定義,於是把兩者的差別記錄於此。
一句話總結:兩者均可用於定義類,唯一的區別是兩者定義的類的默認訪問權限有差別。
其實比兩者差別更重要的是,我很好奇爲什麼 C++ 中會存在兩個用於定義類的關鍵字,而且看起來兩者之間的區別並沒有大到需要多設置一個關鍵字,class 似乎完全可以代替 struct 的功能,後來在一個博客中找到了答案:

如果不是爲了兼容C語言,C++中不會有 struct 關鍵字。

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

如果不是爲了兼容C語言,或無需傳參給C程序,不要在C++中使用 struct 定義類。

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

類可以在它的第一個訪問說明符之前定義成員,對這種成員的訪問權限依賴於類的定義方式。如果我們使用 struct 關鍵字,則定義在第一個訪問說明符之前的成員是 public 的,相反,如果我們使用 class 關鍵字,則這些成員是 private 的。
出於統一編程的考慮,當我們希望定義的類的所有成員是 public 的時,使用 struct;反之,如果希望成員是 private 的,使用 class。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章