C語言中:
Struct是用戶自定義數據類型(UDT)。
C++語言中:
Struct是抽象數據類型(ADT),支持成員函數的定義。
在C++中,struct的成員的默認訪問說明符為public,class為private。
=====================================================================
c中的struct是沒有權限設置的。
C++中struct增加了訪問權限,且可以和類一樣有成員函數。
C++中的struct等同於class,只是class默認成員權限是private,而struct默認成員權限是public。
=====================================================================
在標准C++中,struct和class有兩個區別:
第一:struct中的成員默認是public的,class中的默認是private的。
第二:在用模版的時候只能寫template <class Type>或template <typename Type>不能寫template <struct Type>。
此外,如果沒有多態和虛擬繼承,在C++中,struct和class的存取效率完全相同!簡單的說就是,存取class的data member和非virtual function效率和struct完全相同!不管該data member是定義在基類還是派生類的。
如果不是為了和C兼容,C++中就不會有struct關鍵字。因此建議是:如果不需要與C兼容或傳遞參數給C程序,不要在C++中用struct。
注意class的data member在內存中的布局可不一定是data member的申明次序。C++只保證處於同一個access section的data member按照申明次序排列。
=====================================================================
C++的struct可以當作class來用,他和C++中class的唯一的區別是,class中的成員默認是private,而struct的成員默認為public。
C中的struct只能是一些變量的集合體,可以封裝數據卻不可以隱藏數據,而且成員不可以是函數。