1、默認繼承權限。如果不明確指定,來自class的繼承按照private繼承處理,來自struct的繼承按照public繼承處理;2、成員的默認訪問權限。class的成員默認是private權限,struct默認是public權限。ps:struct和class對于初始化都是需要在初始化列表中進行,或者在構造函數中賦值。
這一點要么是我對你的描述理解錯誤,要么是這條本身錯誤。
struct Node{
int a;
Node():a(0){}
};
算顯示聲明其無參數構造函數嗎?有什么不允許的呢?
struct Node{
int a;
Node():a(0){}
};
這個是初始化參數列表,不是帶參數的構造函數
struct Node{
int a;
Node(int a):a(0){}
};
這樣是可以的,質疑這條
4、struct不允許聲明時,初始化其數據成員值。
這條也有問題,只有常數或者是靜態數據類型才在編譯時候分配空間,也就是說只有常數或者是靜態數據類型才能在聲明是初始化。
6、struct無繼承,但其本身繼承自System.ValueType ----> System.Object。(但是還是可以繼承的~)
System.Object應該是java中的基類,怎們會跑到C++中能,我不理解?
struct在c++中用到的非常少了,原因就是除了1、2條之外和class沒有區別(不過我確實沒用過struct)。
3、struct不允許顯示聲明其無參數構造函數,這不同于class。
只看了這一條,在 gcc 4.4.1 (Mingw) 下
struct Node{
int a;
Node(){}
};
是可以通過的,其它幾條沒有細看了。
這里有一篇可以看看:
http://blog.csdn.net/yygydjkthh/archive/2008/11/27/3380565.aspx