程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++中的struct

C++中的struct

編輯:C++入門知識

問題:
C語言中有struct自定義結構體類型;

C++中也有struct類型,而且,與C++中面向對象主要的數據類型class還極為相似。

那麼,C++中struct和class之間有什麼區別,什麼情況下使用struct呢?

解決辦法:

從C++語言設計者Bjarne Stroustrup的大作《C++編程語言(特別版)》中歸納C++中struct和class的區別,有以下幾點:

1. 成員的默認訪問權限。struct的成員默認是public的;class的成員默認是private的;

2. 默認繼承權限。在沒有明確指定的情況下,struct的默認繼承方式是public,class的默認繼承方式是private;

3. 作者認為,struct S { ...不過是class S { public: ...的簡寫形式。
4. 但作者的習慣用法是,將struct用於所有成員都是public的那些類,而這樣的類,“並不是完整的類型,不過是個數據結構”。

5. 對於有人提出的說法“class能用於模板參數,而struct不能用於模板參數”,本人持謹慎的懷疑態度。

因為,《C++編程語言(特別版)》13.2中指出,template<class C>只是說C是一個類型名,它不必一定是某個類的名字。

類型名的概念比類名更廣泛,不僅包括由類定義引進的類類型的名字,還包括語言的內部類型、枚舉、typedef引進的名字等。

 


本人根據以上總結,決定在自己使用C++的編程中,始終將struct作為一種復雜的數據結構來使用,其成員只包含成員變量,不包含成員函數。

這樣,struct在C++中就與C語言中的意義更為接近,但C++中的struct更加安全。

 


 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved