今天無意中看到兩年前自己總結(jié)的C++和C#中class和struct的比較。
在C++中,class和struct區(qū)別很小。首先,C++中的struct保留有C語言中的struct的功能,但它又與C語言中的struct有很大區(qū)別。C++中的struct可以像class那樣,允許有成員函數(shù),允許繼承。在C++中,class和struct只有兩點區(qū)別。
1.class成員變量和成員函數(shù)默認為private,而struct中成員默認為public。
2.class默認為private繼承,struct默認為public繼承。
除這兩點之外,C++中的class和struct完全一樣。不過,為了理解方便,最好將C++中的struct只當C語言的struct來用。
C#中,class和struct區(qū)別很大。我總結(jié)有以下幾點:
1.class是引用類型,而struct是值類型。引用類型使用的是堆內(nèi)存,也就是動態(tài)內(nèi)存,值類型使用的是棧內(nèi)存。但為了保持外觀的一致,C#讓class和struct在使用時,都要用new來生成對象,形如:Typename a=new Typename ()
2.class允許定義無參的構(gòu)造函數(shù),struct不允許。
3.C#中有專門的interface標識來定義接口,class允許實現(xiàn)接口(類似繼承),而且允許實現(xiàn)多個接口,struct不允許實現(xiàn)接口。當然,C#不允許class繼承多個class。
這里只簡要總結(jié)一下,不再詳細展開說明了。